Dzięki SVN łatwo jest scalić zatwierdzenie odwrotne, ale jak to zrobić z Gitem?
Dzięki SVN łatwo jest scalić zatwierdzenie odwrotne, ale jak to zrobić z Gitem?
Odpowiedzi:
Aby utworzyć nowy zatwierdzenie, które `` cofa '' zmiany poprzedniego zatwierdzenia, użyj:
$ git revert <commit>
Możliwe jest również faktyczne usunięcie zatwierdzenia z dowolnego punktu w przeszłości poprzez zmianę bazy, a następnie zresetowanie, ale naprawdę nie chcesz tego robić, jeśli już wypchnąłeś swoje zatwierdzenia do innego repozytorium (lub ktoś inny wyciągnął z ciebie) .
-m <parent number>
opcję, git revert
aby określić, która zmiana ma zostać cofnięta. Jeśli chcesz cofnąć scalenie niepublikowanej historii, użyj git reset --hard HEAD^1
.
-m
oznacza, że przyszłe scalanie z niescalonej gałęzi nie będzie zawierało zmian sprzed tego scalenia! Zobacz schacon.github.com/git/howto/revert-a-faulty-merge.txt, aby zapoznać się z właściwymi sposobami ponownego scalenia niepołączonej gałęzi.
Aby przywrócić scalania popełnić, trzeba użyć: git revert -m <parent number>
. Na przykład, aby cofnąć ostatnie zatwierdzenie scalające, używając rodzica z numerem 1, użyj:
git revert -m 1 HEAD
Aby cofnąć zatwierdzenie scalające przed ostatnim zatwierdzeniem, należy:
git revert -m 1 HEAD^
Użyj, git show <merge commit SHA1>
aby zobaczyć rodziców, numeracja to kolejność, w jakiej się pojawiają, npMerge: e4c54b3 4725ad2
Dokumentacja git merge: http://schacon.github.com/git/git-merge.html
dyskusja o git merge (myląca, ale bardzo szczegółowa): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
git show <merge commit SHA1>
aby zobaczyć rodziców, numeracja to kolejność, w jakiej się pojawiają, np.Merge: e4c54b3 4725ad2
git revert -m 1 SHA1
To polecenie działało dla mnie, aby cofnąć zatwierdzenie scalające, które było kilkoma zatwierdzeniami scalającymi przed nagłówkiem i miało wiele zatwierdzeń pod spodem.
git reset --hard HEAD^
Użyj powyższego polecenia, aby cofnąć scalone zmiany.
Jeśli nie chcesz zatwierdzać lub chcesz zatwierdzić później (wiadomość o zatwierdzeniu będzie nadal przygotowana dla ciebie, którą możesz również edytować):
git revert -n <commit>