撤销 git merge

由于太多人问怎么撤销 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(-)

这样会创建新的 commit 来抵消对应的 merge 操作,而且以后 git merge 【那个编号所代表的分支】 会提示:

Already up-to-date.

因为使用方法二会让 git 误以为这个分支的东西都是咱们不想要的。

方法三,怎么撤销方法二:

$ git revert 【方法二撤销merge时提交的commit的版本号,这里是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(-)

方法4

前端天天用 WebStorm 写代码的看过来: WebStorm 右键点击项目文件或文件夹,有一个:

Local History -> Show History

点开后出现一个窗口,可以看到所有的本地改动。找到合适的那份,按左上角那个:

Revert

按钮,也就是个紫色的弯曲的小箭头就回去了。在文件量不大的时候十分管用,强烈推荐。

时间: 2024-08-18 05:14:13

撤销 git merge的相关文章

git merge –squash介绍

Git相对于CVS和SVN的一大好处就是merge非常方便,只要指出branch的名字就好了,如: $ git merge another $ git checkout another # modify, commit, modify, commit ... $ git checkout master $ git merge another 但是,操作方便并不意味着这样操作就是合理的,在某些情况下,我们应该优先选择使用--squash选项,如下: $ git merge --squash ano

git merge rebase的区别及应用场景

前两天和同事交流发现他在日常开发中跟上游保持同步每次都是用git pull操作,而我一直习惯git fetch然后rebase,发现这两种操作后的log是有些区别的.他每次pull操作之后都会自动生成一个merge记录,而使用fetch+rebase就没有. 查了下发现其实就是git pull命令两种参数的区别: git pull --merge  默认参数,相当于:git fetch + git merge git pull --rebase 手动指定,相当于:git fetch + git

git merge branch

git branch   look at your branches git branch newbranch git checkout newbrach do something git checkout master git merge newbranch git branch -d newbrach git merge branch,布布扣,bubuko.com

git merge以及比较两个repo

一.需求 1)有两个相关的branch github下载的repo有master和work两个分支,由于远端已经更新,master分支落后于远端分支,work分支又有新的更新内容,需要将远端master分支的更新pull下来,并且和work分支进行合并. 二.操作步骤 1)有两个相关的branch clone下来repo 1.git remote set-url origin https://... 2.git pull 3.git checkout -b new_branch 4.git me

聊下git merge --squash

你经常会面临着将dev分支或者很多零散的分支merge到一个公共release分支里. 但是有一种情况是需要你处理的,就是在你的dev的分支里有很多commit记录.而这些commit是无需在release里体现的. develop 主分支 develop主分支最近的一个commit是"fix imageprint bug.".我们拉出一个分支进行项目开发,里面会有很多commit记录. git checkout -b develop_newfeature_ImportDataInte

[vim] 使用 fugitive.vim 处理 git merge 文件冲突

fugitive.vim 是一个处理 git 信息的 vim 插件. 非常好用,这里展示下怎样用它来处理 git merge 操作中常遇到的文件冲突. 在项目目录中打开 vim, command 模式下输入命令:Gstatus,出现以下界面

git merge commitId 把其他分支的某次提交merge进该分支

之前遇到的问题回顾: 1.目前log出来的内容只能查看不能编辑,虽然fetch下来,但是master和origin/master同时存在.我merge进来然后根据冲突去单个编辑用其他文本编辑器处理,编译确认,再一次add新版本,再次commit和push. 2.我在想有没有单个文件merge的形式,我找了蛮久,找不到类似的命令? 终于看到gitchina站长的视频,发现原来一直需要的是git merge commitId即可. 在此贴一下比较高质量的博客: http://blog.jobbole

闲谈 git merge 与 git rebase 的区别

前言 相信大部分使用 Git 的朋友都会遇见相同的疑问,并且也从网上搜索了不少资料.那么,为什么我还要写这篇文章呢?因为我想尝试从自己的角度解释这个问题,如果能给到大家灵光一闪的感悟,便善莫大焉啦.估计点进来的朋友也对 merge 和 rebase 有了一定了解,所以我也就不浪费篇幅再去详细介绍 merge 和 rebase,让我们直入主题吧. merge 与 rebase 的区别 merge 现在假设我们有一个主分支 master 及一个开发分支 deve,仓库历史就像这样:现在如果在 mas

三十八、git merge简介

git merge的基本用法为把一个分支或或某个commit的修改合并现在的分支上. 我们可以运行git merge -h查看其命令usage: git merge [options] [<commit>...]    or: git merge [options] <msg> HEAD <commit>    or: git merge --abort -n                    do not show a diffstat at the end of