git回滚远程分支(reset和revert命令)

2020-06-01  本文已影响0人  小胖学编程

1. 创建标签

GIT可以打标签(tag)标记一个版本号,发布一个版本时,通常可以在版本库中打一个标签,这样就可以确定打标签时刻的版本。

# git tag -a "指定标签名" -m "指定说明文字" 
git tag -a "v1.0.1" -m "version 1.0.1 released"

当然也是给指定的commitId打标签:

#给指定的commit id打标签 git tag -a "指定标签名" commitID 
git tag -a "v1.0.2"  9fbc3d0
创建tag.png

为某一次提交设置标签。

2. 远程回滚reset命令

reset(重置)是修改header指针指向,达到回滚的目的。


# 获取将要回滚到的版本号

git log --pretty=oneline --abbrev-commit

# 回滚提交(本地回滚)

git reset --hard commentId

# 强制提交到远程分支

git push -f origin master

Git每次提交,都会将其串成一条时间线。header指针指向的是当前提交。

reset原理.png

若是将代码push到远程回滚的步骤。

需要通知同分支的开发人员

  1. 本地使用reset回退版本;
  2. 强行push -f到远程;
  3. 同事使用pull命令拉取服务器代码;
  4. 所有同事本地都要使用reset来回退版本;

3. 远程回滚revert命令

revert(还原)还原某次提交,并作为一次新的commit。

# 还原上一次提交
git revert head
# 推送到远程
git push

例如还原某次提交,使用head即还原上一次提交。

bogon:SpringBoot_Study yexuerui$ git revert head
[master 02a6800] Revert "git9提交"
1 file changed, 8 deletions(-)
delete mode 100644 src/main/java/com/git/Git9.java

使用commitId是还原指定的提交。

注意:git revert只是还原某一次提交,而git reset是回滚多次提交(直接修改header指针指向)。

4. merge代码如何回滚

例如,我们在dev分支上进行大量提交后,合并到了master分支。发现需要将某次合并回滚,如何进行操作?

  1. 可以在合并前使用git tag记录分支;

  2. 合并后,master分支上有多次的提交记录:可以使用reset命令进行本地回滚,然后在强制提交到远程,但是需要和其他同事沟通,以防代码丢失。

  3. 合并后,master分支上有多次的提交记录:但若是产生冲突会存在Merge的日志(只有发生冲突时才会存在该提交记录),可以使用git revert 对应的commitId也可以将本次合并回滚。

bogon:SpringBoot_Study yexuerui$ git log --pretty=oneline
0b965774b8c057f327e9c0527b3dcc7696117345 Merge branch 'master' of https://github.com/yexuerui/SpringBoot_Study

5. reset的三种命令

上一篇 下一篇

猜你喜欢

热点阅读