2010-06-24 97 views
5
$ git checkout to-branch 
$ git merge from-branch 
$ git status | grep unmerged 
# file1 unmerged 
# file2 unmerged 
# file3 unmerged 
$ vi file1 
$ git add . 

Eek!我不是故意要“git add”。我的意思是“git add file1”!如何撤消“git add”。合并期间?

现在我不能让类似的行为:

$ git show :1:file2 

我想:

$ git reset file2 

$ git checkout -m file2 

但无论那些回报file2中给 “未合并” 状态。 git状态不会显示为未合并,并且我无权访问“git show:1:file2”等。我想将文件恢复到未合并状态。

我该如何回到之前“git add”状态。而不会丢失我对file1的更改?

回答

10

(未测试)你有没有尝试

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?

+0

感谢。这会给你带有合并冲突的文件,但它不会更新git用来跟踪合并冲突的任何内容,以便git状态不会将文件显示为未合并且git show:1:file2等。工作。将看看另一个问题。 – 2010-06-24 13:14:33

+0

+1,酷 - 我不知道这个晦涩的功能。只是尝试了一下它的测试,它似乎像广告一样工作。 – 2010-06-24 13:20:57

1

如果有人仍然有这个问题(像我一样,刚才),你可以(现在)这样做:

git update-index --unresolve file2 file3