Mam gałąź „firstproject” z 2 zatwierdzeniami. Chcę się pozbyć tych zatwierdzeń i sprawić, by pojawiały się jako pojedyncze zatwierdzenie.
Polecenie git merge --squash
brzmi obiecująco, ale kiedy uruchamiam git merge --squash
mój terminal, po prostu wyświetla opcje polecenia. Jaka jest poprawna komenda?
Commit 1:
Added 'homepage.html'
Added 'contacts.html'
Commit 2:
Added 'homepage.php'
Added 'homepage.php'
Deleted 'homepage.html'
Deleted 'contacts.html'
Odpowiedzi:
Chcesz
git rebase -i
przeprowadzić interaktywną rebase .Jeśli aktualnie jesteś na swoim "zatwierdzeniu 1", a zatwierdzenie, które chcesz scalić, "zatwierdzenie 2" jest poprzednim zatwierdzeniem, możesz uruchomić
git rebase -i HEAD~2
, co spowoduje pojawienie się edytora z listą wszystkich zatwierdzeń, które przejdzie rebase. Powinieneś zobaczyć dwie linie zaczynające się od „wybierz”. Aby kontynuować zgniatanie, zmień pierwsze słowo drugiego wiersza z „wybierz” na „zgniataj”. Następnie zapisz plik i zakończ. Git zmniejszy twoje pierwsze zatwierdzenie do przedostatniego zatwierdzenia.Zauważ, że ten proces przepisuje historię twojej gałęzi. Jeśli gdzieś wypychasz swój kod, będziesz musiał,
git push -f
a każdy, kto udostępni Twój kod, będzie musiał przeskoczyć przez kilka kółek, aby pobrać zmiany.Zwróć uwagę, że jeśli dwa rozpatrywane zatwierdzenia nie są ostatnimi dwoma zatwierdzeniami w gałęzi, proces będzie nieco inny.
źródło
Then write your file, and quit
? Używam terminala Android Studio, samej konsoli git lub nawet otworzyłem konsolę git przez oprogramowanie SourceTree. Ale jak zapisać i wyjść?Leniwa prosta wersja dla zapominalskich takich jak ja:
git rebase -i HEAD~3
lub jednak wiele zatwierdzeń zamiast 3.Włącz to
zaangażowany w to
i zrobić jakąś akcję, gdzie trafisz
esc
następnieenter
zapisać zmiany. [1]Kiedy pojawi się następny ekran, pozbądź się tych śmieci # lines [2] i utwórz nową wiadomość o zatwierdzeniu lub coś w tym rodzaju, i wykonaj tę samą
escape
enter
akcję. [1]Wowee, masz mniej zatwierdzeń. Albo po prostu wszystko zepsułeś.
[1] - lub cokolwiek działa z twoją konfiguracją git. To tylko sekwencja, która jest wydajna przy mojej konfiguracji.
[2] - zobaczysz kilka rzeczy, takich jak
# this is your n'th commit
kilka razy, z oryginalnymi zatwierdzeniami tuż pod tą wiadomością. Chcesz usunąć te wiersze i utworzyć komunikat o zatwierdzeniu, aby odzwierciedlić intencje n zatwierdzeń, które łączysz w 1.źródło
s
użyte tutaj oznacza squash. Aby użyć zatwierdzenia, ale połącz go z poprzednim zatwierdzeniem2
zatwierdzenia i chcesz połączyć to samo2
zatwierdzenie, musisz uruchomićgit reset --soft HEAD~
igit commit --amend
.git rebase -i HEAD~<quantity of your commits>
(tj.git rebase -i HEAD~5
)txt
pliku zmieńpick
słowo kluczowe nasquash
dla wszystkich zatwierdzeń, z wyjątkiem pierwszego zatwierdzenia (który znajduje się na górze). W przypadku pierwszego zmień go nareword
(co oznacza, że w następnym kroku dodasz nowy komentarz do tego zatwierdzenia) i kliknij ZAPISZ! W vimie naciśnij,esc
a następnie zapisz, wpisującwq!
i naciśnij enter.Gotowe
źródło