Z leniwych powodów wprowadziłem kilka zatwierdzeń z domyślnymi wiadomościami, a teraz stało się to uciążliwe, ponieważ tak naprawdę nie wiem, co zmieniłem w każdym zatwierdzeniu.
Jak mogę edytować tylko komunikaty poprzednich zatwierdzeń i (jeśli to możliwe) zachować drzewo zmian?
Odpowiedzi:
Aby edytować komunikaty zatwierdzania serii zatwierdzeń, uruchamiam
gdzie
firstsha
jest identyfikatorem zatwierdzenia nadrzędnego pierwszego zatwierdzenia, które chcę edytować. (Możesz tutaj użyć dowolnego ważnego odwołania, więcgit rebase -i HEAD~4
pokażą cztery ostatnie zatwierdzenia.)W edytorze, który zostanie otwarty, zmień wszystkie wpisy „wybierz” na „przeredaguj” przy zatwierdzeniach, które chcesz zmodyfikować, a następnie zamknij edytor; następnie zostaniesz poproszony o wprowadzenie komunikatów zatwierdzenia dla wszystkich wybranych przez siebie zatwierdzeń.
Zauważ, że spowoduje to zmianę drzewa zatwierdzeń, ponieważ zmieni się skrót mieszania zatwierdzeń. Będziesz musiał naciskać nowe drzewo na siłę lub na nową gałąź. Będzie to również popsuć scalenia, więc unikaj edycji zatwierdzeń scalania.
Aby szybko edytować tylko ostatnie zatwierdzenie, uruchom
(ale uważaj na wszystko, co wystawiono na zatwierdzenie).
źródło
preserve-merges
)To czego szukasz
git rebase
.Jeśli chcesz tylko zmienić poprzednią
git commit
wiadomość, musisz użyć tylko:I wprowadź żądane zmiany w poprzednim zatwierdzeniu, a następnie zapisz zmiany.
Jednak jeśli chcesz zmienić starsze zatwierdzenia, musisz ich użyć
rebase
.gdzie N jest równe liczbie zatwierdzeń, do których chcesz wrócić, np. 2 lub 12 lub 6 itd. itd.
Tutaj powinieneś dostać edytor tekstu ze swoimi zobowiązaniami. Zmień opcję z
pick
na,reword
aby zmienić wiadomość.Po zidentyfikowaniu wszystkich zmian, które chcesz zmienić i odpowiedniej zmianie ich opcji, zapisz i zamknij edytor. Następnie wprowadź zmiany w każdym komunikacie zatwierdzenia. Gdy będziesz zadowolony, możesz uruchomić:
I powinieneś zachować swoją historię git, choć z różnymi wartościami skrótu, ponieważ dokonałeś niezbędnych zmian, które chcesz. Oto kilka dodatkowych linków, które powinieneś sprawdzić:
7.6 Narzędzia Git - Przepisywanie historii
Pomoc GitHub - Zmienianie
komunikatu zatwierdzenia StackOverflow - Pytanie na temat zmiany starych komunikatów zatwierdzania
źródło
commit --amend
”, chyba że w jakiś sposób zakłócisz proces zatwierdzania.git rebase -i firstsha
tofirstsha
jest rodzic popełnić znajduje hash z popełnić, że chciałbym, aby zmienić treść wiadomości, a następnie w edytorze, zmianpick
doreword
,enter
nowej wiadomości, a następnie wydajgit rebase --continue
i zrobićgit push --force
?git rebase -i HEAD~N
z N, czyli liczbą zatwierdzeń z powrotem, którą chcesz wykonać. Zmień każdy popełnić opcję, którą chcesz edytować wiadomość odpick
celureword
, zapisać ten plik, wprowadzić zmiany do każdego z tych popełnić plików i zapisać te. Gdy masz pewność, że jesteś skończony, potrzebujesz tylkogit push --force [Name of git branch you are were working on]
. Zawsze możesz wrócić i zrobić to ponownie lub zrobić to etapami.