2010-06-24 158 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