2010-06-24 12 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! Nie chciałem "dodać git". Chciałem "git add file1"!Jak cofnąć "git add." podczas scalania?

Teraz nie mogę dostać zachowania jak:

$ git show :1:file2 

Próbowałem:

$ git reset file2 

i

$ git checkout -m file2 

ale żadna z tych zwrotów file2 do stanu "sprzed fuzji" . git status nie pokazuje go jako unmerged i nie mam dostępu do "git show: 1: file2", itp. Chcę przywrócić plik do stanu niewyłączonego.

Jak mogę wrócić do stanu, w którym byłam przed "git add." bez utraty moich zmian do pliku1?

Odpowiedz

10

(nie badane) Próbowałaś

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

?

Po sprawdzeniu ścieżek z indeksu, opcja ta pozwala odtworzyć skonfliktowany seryjnej w określonych ścieżek

Jeśli to nie zadziała, to może masz jakieś inne odpowiedzi w pytaniu SO " How do I get my git merge conflicts back after merging incorrectly? "

+0

Dzięki. Daje ci to plik z konfliktami scalającymi, ale nie aktualizuje tego, czego używa git do śledzenia konfliktów scalania, więc status git nie pokazuje pliku jako unmerged i git show: 1: file2, itp. Nie praca. Przyjrzę się innym pytaniom. –

+0

+1, Super - Nie wiedziałem o tej niejasnej funkcji. Właśnie wypróbowałem z nim test i wydaje się działać jak w reklamie. –

1

W przypadku ktoś nadal ten problem (tak jak ja przed chwilą), można (obecnie) to zrobić:

git update-index --unresolve file2 file3