我在分支 mybranch1
。 mybranch2
是从 mybranch1
派生的,并且在 mybranch2
中进行了更改。
然后,在 mybranch1
上,我完成了 git merge --no-commit mybranch2
它显示合并时存在冲突。
现在我想丢弃所有内容(merge
命令),以便 mybranch1
恢复到以前的状态。我不知道我该怎么做。
最新的 Git:
git merge --abort
这会尝试将您的工作副本重置为合并前的任何状态。这意味着它应该从合并之前恢复任何未提交的更改,尽管它不能总是可靠地这样做。通常,无论如何您都不应该与未提交的更改合并。
在版本 1.7.4 之前:
git reset --merge
这是较旧的语法,但与上述相同。
在版本 1.6.2 之前:
git reset --hard
这将删除所有未提交的更改,包括未提交的合并。有时,即使在支持上述命令的较新版本的 Git 中,这种行为也很有用。
实际上,值得注意的是,鉴于存在 MERGE_HEAD
,git merge --abort
仅等同于 git reset --merge
。这可以在 git help for merge 命令中阅读。
git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.
合并失败后,当没有 MERGE_HEAD
时,可以使用 git reset --merge
撤消失败的合并,但不一定使用 git merge --abort
,因此它们不仅是同一事物的旧语法和新语法。
就我个人而言,我发现 git reset --merge
在日常工作中更有用。
git stash apply
开头的合并,而 git merge --abort
什么也没做(没有 MERGE_HEAD
),而 git reset --merge
成功了。
git merge --abort
是 git reset --merge
的新命令,我遇到了与 @geomaster 相同的问题,这非常有帮助,谢谢!
假设你使用的是最新的 git,
git merge --abort
如果使用最新的 Git,
git merge --abort
否则这将在较旧的 git 版本中完成工作
git reset --merge
或者
git reset --hard
git
版本 2.31.1
发布的时间比此评论晚,因此我认为它是“最新的”,只有 git reset --hard
有效,其余无效。
您可以做两件事,首先通过命令撤消合并
git merge --abort
或者
你可以通过命令暂时进入你之前的提交状态
git checkout 0d1d7fc32
源树
如果您不提交合并,则只需双击另一个分支(=checkout),当 sourcetree 询问您是否放弃所有更改时,请同意
不定期副业成功案例分享
git reset --merge
。我在 git 2.2.1 中git reset --merge
成功(并且做正确的事情)的地方出现了git merge --abort
错误(不做任何更改)。git merge --abort
,然后执行git reset --merge
。git merge --abort
对我有用,但是我发现自己处于分离的 HEAD 状态签出的情况,并且我的一个文件处于“都已修改”状态。我想丢弃所有内容并返回分支,我不得不git reset --hard
,git merge --abort
告诉我没有要中止的合并,(MERGE_HEAD 缺失)。git merge --abort
无法让您恢复之前的状态,在这种情况下,“旧语法”git reset --hard
可以解决问题。