właśnie zrobiłJak cofnąć squash git merge?
git merge --squash feature-branch
do mojego develop
gałęzi.
Problem polega na tym, że powyższe polecenie zaktualizowało nagłówek bez tworzenia nowego zatwierdzenia. Moją intencją było stworzenie jednego zobowiązania do zgłoszenia się do szefa develop
.
W skrócie, dziennik gałęzi develop
przed i po scaleniu jest dokładnie taki sam.
Czy istnieje sposób, aby przywrócić develop
do tego, co było przed git merge
?
Dziękuję.
Rozwiązanie
podstawie komentarza od Dan D. i zaakceptowanej odpowiedzi poniżej I był w stanie rozwiązać mój problem. Zobacz poniżej, co zrobiłem w przypadku, gdy jesteś w tej samej łodzi:
1 - Uruchomiłem git reflog
i wymienione wszystkie zatwierdzenia i kasacje zrobiłem z moim oddziałem develop
.
2 - Zamiast proponować git reset [email protected]{1}
zgodnie z sugestią, znalazłem numer, gdy wykonałem ostatnie zatwierdzenie do opracowania, które chciałem zachować. W moim przypadku był to [email protected]{188}
. Więc wpisałem git reset [email protected]{188}
.
3 - Przebiegłem git log
i miał czysty dziennik pokazujący tylko zatwierdzenia, które miałem przed wykonaniem złego scalenia.
4 - Uruchomiłem git add -A .
, aby wystawić wszystkie nowe pliki utworzone podczas mojego rozwijania funkcji.
5 - Pobiegłem git commit -m "install feature-x"
6 - W rezultacie teraz mam oddział develop
z odpowiednich plików i log jest czysty - pokazano tylko jeden commit dla wszystkich zmian, które zrobiłem podczas rozwoju feature-x
.
Nadal muszę się dowiedzieć, dlaczego mój oryginalny git merge --squash feature-branch
nie działa zgodnie z przeznaczeniem.
Rozwiązanie 2
odpowiedź Mark Longair jest ostateczne rozwiązanie mojego problemu. Właśnie to przetestowałem i działa. Zobacz poniżej procesie używam teraz zgnieść wszystkie wewnętrzne zobowiązuje obrębie feature-branch
i obejmują tylko jeden zobowiązać się do develop
oddziału:
git checkout develop
git merge --squash feature-branch
git commit -m "install of feature-branch"
Powyższa sekwencja działa jak czar.
Użyj 'git reflog'. –