如何在合并期间撤销 "git add ." 命令?

10
$ git checkout to-branch
$ git merge from-branch
$ git status | grep unmerged
#  file1    unmerged
#  file2    unmerged
#  file3    unmerged
$ vi file1
$ git add .

啊!我本意不是要使用 "git add .",而是想用 "git add file1"!

现在我无法得到以下行为:

$ git show :1:file2

我尝试了:

$ git reset file2

$ git checkout -m file2

但是这两个命令都不能将file2返回到“未合并”的状态。git status不会显示它为未合并状态,我也无法访问“git show :1:file2”等命令。我想把文件恢复到未合并的状态。

我如何回到“git add .”之前的状态,但又不失去对file1所做的更改?

2个回答

15

(未经测试)你尝试过了吗?

 git checkout -m /path/to/file2
 git checkout -m /path/to/file3

当从索引中检出路径时,此选项允许您在指定的路径上重新创建冲突的合并

如果这不起作用,您可以在SO问题“How do I get my git merge conflicts back after merging incorrectly?”中找到其他答案。


谢谢。这确实会给你带来合并冲突的文件,但它不会更新Git用于跟踪合并冲突的内容,因此git状态不会显示该文件未合并,git show :1:file2等也无法工作。我会看一下其他问题。 - Thomas David Baker
+1,太酷了--我不知道这个晦涩的功能。刚试了一下,看起来像广告中描述的那样工作。 - Dan Moulding

4

如果还有人遇到这个问题(就像我刚才遇到的一样),现在你可以这样做:

git update-index --unresolve file2 file3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接