如何撤销Git的一次分支合并操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何撤销Git的一次分支合并操作相关的知识,希望对你有一定的参考价值。
参考技术A由于太多人问怎么撤销 merge 了,于是 git 官方出了这份教程,表示在 git 现有的思想体系下怎么达到撤销 merge 的目标。
方法一,reset 到 merge 前的版本,然后再重做接下来的操作,要求每个合作者都晓得怎么将本地的 HEAD 都回滚回去:
$ git checkout 【行merge操作时所在的分支】
$ git reset --hard 【merge前的版本号】
方法二,当 merge 以后还有别的操作和改动时,git 正好也有办法能撤销 merge,用 git revert:
$ git revert -m 【要撤销的那条merge线的编号,从1开始计算(怎么看哪条线是几啊?)】 【merge前的版本号】
Finished one revert.
[master 88edd6d] Revert "Merge branch \'jk/post-checkout\'"
1 files changed, 0 insertions(+), 2 deletions(-)
这样会创建新的 mit 来抵消对应的 merge 操作,而且以后 git merge 【那个编号所代表的分支】 会提示:
Already up-to-date.
因为使用方法二会让 git 误以为这个分支的东西都是咱们不想要的。
方法三,怎么撤销方法二:
$ git revert 【方法二撤销merge时提交的mit的版本号,这里是88edd6d】
Finished one revert.
[master 268e243] Revert "Revert "Merge branch \'jk/post-checkout\'""
1 files changed, 2 insertions(+), 0 deletions(-)
这样就行了,可以正常 merge 了,不过可能会有很多冲突噢!!
$ git merge jk/post-checkout
Auto-merging test.txt
Merge made by recursive.
test.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
=====================简单翻译结束====================
最后的最后,还是觉得顶上那些都麻烦爆了。
前端天天用 WebStorm 写代码的看过来: WebStorm 右键点击项目文件或文件夹,有一个:
Local History -> Show History
点开后出现一个窗口,可以看到所有的本地改动。
找到合适的那份,按左上角那个:
Revert
按钮,也就是个紫色的弯曲的小箭头就回去了。
在文件量不大的时候十分管用,强烈推荐。
Git commit 提交没有被远端分支合并,撤销本次commit
问题:今天修改代码,误把项目配置文件修改为本地数据库连接,需要撤销本次commit 记录。
解决办法:
第一步:使用git log 查看所有commit 记录。
第二步:使用git show commitID 查看指定commit 文件修改记录。
第三步:使用git reset --soft HEAD^ 回退最近一次的 commit 记录。
Git show 指令拓展
1.查看最新的commit
git show
2.查看指定commit hashID的所有修改:
git show commitId
git show commitId
3.查看某次commit中具体某个文件的修改:
git show commitId fileName
Git reset 指令拓展
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
以上是关于如何撤销Git的一次分支合并操作的主要内容,如果未能解决你的问题,请参考以下文章
git分支合并撤销;git修改已push的commit信息; git 撤销操作;
Git commit 提交没有被远端分支合并,撤销本次commit
Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突