Pracuję nad projektem, używając Gita jako VCS. Mam xyz
odciętą gałąź z głównej gałęzi mistrza. Po dłuższej pracy popełniłem kod i zacząłem korzystać z głównej linii oddziału.
Pociągnięcie było w porządku. Następnie połączyłem kod z masterem. Po scaleniu wystąpiły problemy w niektórych plikach. Nie popełniłem kodu po scaleniu. Czy ktoś może wskazać, jak mogę przerwać to scalanie i przenieść oddział, w którym obecnie pracuję, do stanu, w którym znajdował się przed scaleniem?
revert
to nazwa polecenia, które tworzy nowe zatwierdzenie, cofając zmiany z poprzedniego zatwierdzenia, więc prawdopodobnie nie jest to słowo, którego tutaj szukasz. Mam edytować swoje pytanie do wyjaśnienia.Odpowiedzi:
tak długo, jak nie zatwierdziłeś, możesz pisać
tak jak sugerowała linia poleceń.
źródło
error: Entry 'MyFile.java' not uptodate. Cannot merge. fatal: Could not reset index file to revision 'HEAD'.
Jeśli zrobisz „git status” podczas konfliktu scalania, pierwszą rzeczą, którą git pokaże, jest to, jak przerwać scalanie.
źródło
git reset HEAD <file>
którego skutecznie usunąłem zwijane "merge" z kontroli źródła rozszerzenia git => wtedy mogłem albo rozwiązać konflikty, albo po prostu przywrócić moje zmiany na liście rozszerzeń GIT :)Prawdę mówiąc, istnieje wiele, wiele zasobów wyjaśniających, jak to zrobić, już w sieci:
Git: jak odwrócić scalenie zatwierdzenia?
Git: jak odwrócić scalenie zatwierdzenia?
Undoing Merges , from Git's blog (pobrane z Archive.org's Wayback Machine)
Więc chyba podsumuję tylko niektóre z nich:
git revert <merge commit hash>
Tworzy to dodatkowe zatwierdzenie „cofnij”, informujące o cofnięciu scalenia
git reset --hard <commit hash *before* the merge>
Zresetuj historię do stanu sprzed scalenia. Jeśli masz zatwierdzenia po scaleniu, będziesz potrzebować
cherry-pick
ich później.Ale szczerze mówiąc, ten przewodnik jest lepszy niż cokolwiek, co mogę wyjaśnić, z diagramami! :)
źródło