我做了
git merge FETCH_HEAD
并且,在git告诉我一个文件中存在冲突之后,我做了一个
git mergetool
在我的案例中,它将SourceGear DiffMerge作为GUI mergetool运行。保存合并文件后,我意识到我犯了一个错误。我只想忘记合并并全力以赴。
因为我没有执行过" git add"然而,更不用说承诺了什么,我想我可以抹掉我的错误并轻松地重做合并:
git reset FILENAME
git merge FETCH_HEAD
git mergetool
这不起作用。 " git merge"这个时候告诉我
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.
但我当然不想犯下搞砸的合并。 " git mergetool"抱怨
No files need merging
我想我在" git reset"命令。这样做的正确方法是什么?
中加入:
我做了
git merge --abort
然后再次:
git merge FETCH_HEAD
这产生了
error: Your local changes to the following files would be overwritten by merge: ...
git status
表示:
On branch ....
Your branch is up-to-date with ......
Changes not staged for commit:
modified: nVP.ini
Untracked files:
nVP.ini.orig
no changes added to commit (use "git add" and/or "git commit -a")
只是一个想法:nVP.ini的git checkout会在合并之前带回来吗?
答案 0 :(得分:11)
要在提交之前撤消错误的冲突解决方案git checkout -m -- $thefile
。
$ git merge 3fac3
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
$ vi file.txt # fix all the conflicts. do it wrong.
$ git add file.txt # <--- ooops
$ git checkout -m -- file.txt # <--- the correct un-oops-ifier here
并且file.txt
又回到了失败的自动登录状态。
请注意,您还可以指定冲突报告样式,因此如果您通常使用默认的双差异样式,但是您有一个令人困惑的样式并且想要查看原始样式,则可以git checkout -m --conflict diff3 -- file.txt
。
答案 1 :(得分:1)
我遇到了同样的问题,
在 dev 中合并了一个分支,这在冲突解决期间擦除了另一个分支更改。
为此我使用了cherry-pick:
git cherry-pick {merge commit sha of missing branch code} -m 1
我能够重做整个冲突解决过程。