2013-04-17 9 views
22

Aby zbadać efekt wprowadzony przez poprzednie zatwierdzenie, chcę cofnąć - zastosować go do mojej kopii roboczej i skrzypnąć z kodem.Odwróć Zastosuj zatwierdzenie do kopii roboczej

Udało mi się z obiegiem pracy wokół tworzenia i stosowania poprawki, ale zastanawiam się, czy można to zrobić łatwiej.

git checkout -b "tmp-fiddle" 
git diff -R -p d9fd2bb^ d9fd2bb > patch_to_examine.patch 
# Manually edit the patch a little 
git apply patch_to_examine.patch 

Zauważ, że nie patrzę na git revert lub git rebase -i od nich albo by wprowadzić nowy popełnienia lub zmienić historię: Ja tylko chce zmian wprowadzonych w d9fd2bb być un-zastosować do mojego obecnego kopii roboczej.

+0

Co ręczna edycja robisz? –

+0

To była łatka, która nie działała czysto; wysyłanie ostrzeżeń o białych znakach. – berkes

Odpowiedz

35

Co powiecie na git revert -n?

-n 
--no-commit 

Zazwyczaj komenda automatycznie tworzy jakieś rewizje z popełnić wiadomości dziennika stwierdzające, które zostały przywrócone commity. Ta flaga stosuje zmiany niezbędne do przywrócenia nazwanych zatwierdzeń do drzewa roboczego i indeksu, ale nie powoduje zatwierdzenia. Ponadto, gdy ta opcja jest używana, indeks nie musi być zgodny z zatwierdzeniem HEAD. Przywracanie jest wykonywane przed początkowym stanem indeksu.

Jest to przydatne, gdy do jednego indeksu z rzędu zostanie przywrócone więcej niż jeden efekt zatwierdzenia.

+1

Niestety, działa to tylko tak długo, jak kopia robocza nie zawiera żadnych modyfikacji plików, których dotyczy zatwierdzenie (może jednak powodować zmiany w innych plikach). Chyba w takim przypadku potrzebujesz 'git stash; git revert -n ; git stash pop' i rozwiąż konflikty (jeśli są). – arekolek

Powiązane problemy