2011-02-08 13 views
39

Jestem nowy dla git (i cieszę się nim bardzo!). Rozwijając się w nowym oddziale, nadal angażowałem różne "stany" rozwojowe mojego zgłoszenia. Teraz muszę to sprawdzić, ale nie chcę, aby wszystko działało w różnych zatwierdzeniach (różne komentarze i identyfikatory).Git merge commits

Jak mogę wprowadzić wszystkie zmiany tak, jakby były po raz pierwszy?

+3

Możesz zapytać o to w przepełnieniu stosu, ponieważ jest to konkretne pytanie techniczne, dzięki czemu zyskasz większe grono odbiorców. –

+0

dzięki @Alex Feinman :) – DiogoNeves

+0

możliwy duplikat [Jak scalić dwa commitowania w jeden?] (Http://stackoverflow.com/questions/2563632/how-can-i-merge-two-commits-into-one) – givanse

Odpowiedz

49
git rebase -i HEAD~5 

pozwala interaktywnie wybrać, które z 5 ostatnich zatwierdzeń do połączenia w jeden; od szczytu głowy otwiera edytor z czymś takim

pick xxxx commit1 
pick xxxx commit2 
pick xxxx commit3 
pick xxxx commit4 
pick xxxx commit5 

to zmienić w

pick xxxx commit1 
squash xxxx commit2 
squash xxxx commit3 
squash xxxx commit4 
pick xxxx commit5 

co skutkuje dwoma zobowiązuje pozostają: najpierw jeden, który połączył zobowiązuje 1 - 4, i zatwierdź 5 (najnowszy), który pozostaje sam

+4

Masz kolejność wstecz - zatwierdzenia są wyświetlane od najstarszych do pierwszych. –

+0

@jleedev +1 masz rację, naprawiono – stijn

+0

Dzięki! :) Naprawdę miękko resetuję się do zatwierdzenia tuż przed pierwszym commitem, który zrobiłem, a potem zrobiłem całkiem nowy commit wszystkich zmian razem, ale nie byłem zadowolony z mojego rozwiązania. Dzięki za to :) – DiogoNeves

5

Myślę, że to dobry pomysł, aby zachować swoje "mikro commits". Możesz zrobić różnicę od ostatniego zatwierdzenia przed twoją funkcją do bieżącego HEAD, aby zobaczyć całą różnicę, którą możesz wysłać do sprawdzenia.

+0

Jest to bardziej specyficzna dla scenariusza rzecz; zazwyczaj będziesz chciał zmienić bazę i uczynić zatwierdzenia bardziej logicznym i pozbyć się "oops!" zatwierdza przed wysłaniem poprawek. – alternative

+1

To prawda, ale nie lubię zgniatania całego tygodnia/miesiąca rozwoju w pojedynczym zatwierdzeniu tylko do celów recenzji. Jestem ciężkim użytkownikiem '--amend'. –

+0

Prawdopodobnie masz rację, jak powiedział mathepic, musi być specyficzna dla scenariusza. W moim przypadku wysyłam go do sprawdzenia innym, a deklaracje "zapasowe" nie mają w tym sensu :) Dzięki – DiogoNeves

Powiązane problemy