Jak edytować lub przeformułować komunikat zatwierdzenia scalającego?
git commit --amend
działa, jeśli jest to ostatnie dokonane zatwierdzenie ( HEAD
), ale co, jeśli nastąpi wcześniej HEAD
?
git rebase -i HEAD~5
nie wymienia zatwierdzeń scalania.
! [rejected] HEAD -> master (non-fast-forward)error: failed to push some refs to
HEAD~5
jest rodzicem zmiany, którą chcesz zmodyfikować (zwykle sha1 ^).--preserve-merges
jest teraz--rebase-merges
Zwróć uwagę, że uruchomienie git1.7.9.6 (i git1.7.10 +)
git merge
samo zawsze wywoła edytor , abyś mógł dodać szczegóły do scalenia.Wprowadza również zmienną środowiskową,
GIT_MERGE_AUTOEDIT
aby pomóc starszym skryptom w odrzuceniu tego zachowania.Zobacz „ Przewidywanie Git 1.7.10 ”:
Linus powiedział:
Zauważ, że przed Git 2.17 (Q2 2018), "
git rebase -p
" zniekształcone komunikaty dziennika dotyczące zatwierdzenia scalania, które teraz zostało naprawione.Zobacz commit ed5144d (08 lutego 2018) autorstwa Gregory Herrero (``) .
Sugerowane przez: Vegard Nossum (
vegard
) i Quentin Casasnovas (casasnovas
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 8b49408 , 27 lutego 2018 r.)W Git 2.23 (Q2 2019),
merge -c
instrukcja " " podczas "git rebase --rebase-merges
" powinna dać użytkownikowi szansę na edycję komunikatu dziennika, nawet jeśli w innym przypadku nie ma potrzeby tworzenia nowego scalania i zastępowania istniejącego (tj. Zamiast tego przewiń do przodu ), ale tak się nie stało.Który został poprawiony.
Zobacz commit 6df8df0 (02 maja 2019) autorstwa Phillip Wood (
phillipwood
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu c510261 , 13 czerwca 2019 r.)źródło
Kolejna fajna odpowiedź przy użyciu tylko prymitywnych poleceń - przez knittl https://stackoverflow.com/a/7599522/94687 :
lub lepsza (bardziej poprawna) ostateczna komenda rebase:
Przy okazji, używanie prymitywnych poleceń może mieć tę fajną "cechę" polegającą na tym, że nie zużywa zbyt dużo procesora i sprawi, że będziesz czekać nieznany czas, aż Git skończy myśleć o liście zatwierdzeń, które należy zmienić w przypadku
git rebase -p -i HEAD^^^^
(takie polecenie, które spowodowałoby lista tylko 4 ostatnich zatwierdzeń z scaleniem jako ostatnia w moim przypadku w moim przypadku zajęła około 50 sekund!).źródło
git merge --edit
Umożliwia udzielenie komentarza nawet w przypadku nieinteraktywnego scalania.
git merge --edit --no-ff
może być przydatne, jeśli podążasz za przepływem git z ponownym bazowaniem na gałęzi programistycznej i scalaniem z nią bez szybkiego przewijania do przodu.źródło
Aktualne wersje Git (maj 2020):
git rebase -i -r <parent>
,następnie zastąpić w edytorze
merge -C ...
zmerge -c ...
.Spowoduje to otwarcie komunikatu o zatwierdzeniu w edytorze podczas ponownego bazowania, gdzie można go zmienić.
(Dzięki VonC za podpowiedź .)
źródło
git rebase -i HEAD~5
Poleceń wyskakuje edytor. Zawiera listę określonych zatwierdzeń (w tym przypadku pięciu z nich). Pierwsza kolumna zawierapick
dla każdego zatwierdzenia. Wystarczy wymienićpick
zereword
w tym edytorze i zapisz + zamknij edytor. Wtedy będzie git pop-up edytor dla każdego popełnić gdzie zmieniłpick
sięreword
i pozwoli na edycję commit wiadomość.źródło
-p
dogit rebase
polecenia.