Napisałem niewłaściwą wiadomość w komunikacie zatwierdzenia.
Jak mogę zmienić wiadomość? Zatwierdzenie nie zostało jeszcze wypchnięte.
git
git-commit
git-rewrite-history
amend
Laurie Young
źródło
źródło
Odpowiedzi:
Zmiana najnowszego komunikatu zatwierdzenia
otworzy edytor, umożliwiając zmianę komunikatu zatwierdzenia ostatniego zatwierdzenia. Dodatkowo możesz ustawić komunikat zatwierdzenia bezpośrednio w wierszu poleceń za pomocą:
… Może to jednak sprawić, że wprowadzanie wielu wierszy lub małych poprawek stanie się trudniejsze.
Upewnij się, że nie ma żadnych zmian w pracy kopiowania wystawił przed wykonaniem tego czy będą one uzyskać popełnił zbyt. ( Nieustalone zmiany nie zostaną zatwierdzone ).
Zmiana wiadomości zatwierdzenia, którą już wypchnąłeś do swojego zdalnego oddziału
Jeśli już wypchnąłeś swoje zatwierdzenie do zdalnego oddziału, to po lokalnej zmianie zatwierdzenia (jak opisano powyżej) - będziesz musiał również wymusić wypchnięcie zatwierdzenia za pomocą:
Ostrzeżenie: wymuszone zastąpienie zdalnej gałęzi stanem twojego lokalnego . Jeśli istnieją commity na pilocie zdalnego oddziału, który nie ma w swoim lokalnym oddziale, to będzie tracić te rewizje.
Ostrzeżenie: zachowaj ostrożność przy wprowadzaniu zmian, które już udostępniasz innym osobom. Zmiana zatwierdza zasadniczo przepisuje je na różne identyfikatory SHA , co stanowi problem, jeśli inne osoby mają kopie starego zatwierdzenia, które przepisałeś. Każdy, kto ma kopię starego zatwierdzenia, będzie musiał zsynchronizować swoją pracę z nowo przepisanym zatwierdzeniem, co czasem może być trudne, więc upewnij się, że koordynujesz z innymi podczas próby przepisania wspólnej historii zatwierdzeń lub po prostu unikniesz przepisywania wspólnych zatwierdzeń całkowicie.
Wykonaj interaktywny rebase
Inną opcją jest użycie interaktywnego rebase. Umożliwia to edycję dowolnej wiadomości, którą chcesz zaktualizować, nawet jeśli nie jest to najnowsza wiadomość.
Aby wykonać squash Git, wykonaj następujące kroki:
Gdy zmiażdżysz swoje zobowiązania - wybierz
e/r
do edycji wiadomość:Ważna uwaga na temat interaktywnej bazy danych
Podczas używania
git rebase -i HEAD~n
może być więcej niż n zatwierdzeń. Git „zbierze” wszystkie zatwierdzenia z ostatnich n zatwierdzeń, a jeśli gdzieś pomiędzy tym zakresem nastąpiło scalenie, zobaczysz również wszystkie zatwierdzenia, więc wynikiem będzie n +.Dobra wskazówka:
Jeśli musisz to zrobić dla więcej niż jednego oddziału, a podczas modyfikowania treści możesz napotkać konflikty, skonfiguruj
git rerere
i pozwól Gitowi automatycznie rozwiązać te konflikty.Dokumentacja
git-commit (1) Podręcznik strony
git-rebase (1) Podręcznik strony
git-push (1) Podręcznik strony
źródło
git commit --amend
nie jest tak potężny jakgit rebase -i
.git commit --amend
można naprawić (a?) Master commit.git push -f origin branchname
git push -f
jest trochę niebezpieczny, jeśli inne osoby korzystają z tego samego repozytorium?git commit --amend -c HEAD
. Spowoduje to otwarcie edytora wstępnie wypełnionego starym komunikatem zatwierdzenia, aby można go było zmienić.źródło
Jeśli zatwierdzenie, które chcesz naprawić, nie jest najnowsze:
git rebase --interactive $parent_of_flawed_commit
Jeśli chcesz naprawić kilka wadliwych zatwierdzeń, przekaż element nadrzędny najstarszego z nich.
Pojawi się edytor z listą wszystkich zatwierdzeń od tego, który podałeś.
pick
nareword
(lub na starsze wersje Git, naedit
) przed wszelkimi zatwierdzeniami, które chcesz naprawić.Za każdym zatwierdzeniem, które chcesz przeredagować , Git przeniesie Cię z powrotem do edytora. Dla każdego zatwierdzenia, które chcesz edytować , Git umieszcza cię w powłoce. Jeśli jesteś w powłoce:
git commit --amend
git rebase --continue
Większość tej sekwencji zostanie wyjaśniona na podstawie danych wyjściowych różnych poleceń. To jest bardzo łatwe; nie musisz go zapamiętywać - pamiętaj tylko, że
git rebase --interactive
pozwala to korygować zatwierdzenia bez względu na to, jak dawno temu były.Pamiętaj, że nie będziesz chciał zmieniać zatwierdzeń, które już wypchnąłeś. A może robisz to, ale w takim przypadku będziesz musiał bardzo uważnie komunikować się ze wszystkimi, którzy mogli wywiązać się z twoich zobowiązań i wykonali nad nimi pracę. Jak mogę odzyskać / ponownie zsynchronizować po tym, jak ktoś przekaże bazę lub reset do opublikowanej gałęzi?
źródło
reword
zamiastpick
edytować komunikat w dzienniku.$parent_of_flawed_commit
jest równoważne z$flawed_commit^
.-p
(--preserve-merges
), jeśli po wadliwym zatwierdzeniu nastąpiło scalenie.Aby zmienić poprzednie zatwierdzenie, wprowadź odpowiednie zmiany i wprowadź zmiany, a następnie uruchom
Spowoduje to otwarcie pliku w edytorze tekstu reprezentującym nową wiadomość zatwierdzenia. Zaczyna się od tekstu ze starej wiadomości zatwierdzenia. Zmień komunikat zatwierdzenia, jak chcesz, a następnie zapisz plik i zamknij edytor, aby zakończyć.
Aby zmienić poprzednie zatwierdzenie i zachować ten sam komunikat dziennika, uruchom
Aby naprawić poprzednie zatwierdzenie, usuwając je całkowicie, uruchom
Jeśli chcesz edytować więcej niż jedną wiadomość zatwierdzenia, uruchom
(Zastąp licznik zatwierdzeń liczbą zatwierdzeń, które chcesz edytować.) To polecenie uruchamia edytor. Oznacz pierwszy zatwierdzenie (ten, który chcesz zmienić) jako „edytuj” zamiast „wybierz”, a następnie zapisz i zamknij edytor. Wprowadź zmiany, które chcesz zatwierdzić, a następnie uruchom
Uwaga: Możesz także „Dokonać żądanej zmiany” z edytora otwartego przez
git commit --amend
źródło
git rebase -i HEAD~commit_count
pozwoli również na zmianę komunikatów zatwierdzenia dowolnej wybranej liczby zatwierdzeń. Po prostu zaznacz wybrane zatwierdzenia jako „przeredaguj” zamiast „wybierz”.git reset --hard
niszczy niezatwierdzone zmiany. Proszę wymienić--hard
z--soft
.git reset --hard
jest całkowicie uzasadnionym poleceniem, ale jest mylące, biorąc pod uwagę pytanie. Używasz--hard
, jeśli dokonałeś zmian, które chcesz wyrzucić, a nie, jeśli popełniłeś literówkę w komunikacie zatwierdzenia!Jak już wspomniano,
git commit --amend
jest to sposób na zastąpienie ostatniego zatwierdzenia. Jedna uwaga: jeśli chcesz również zastąpić pliki , polecenie brzmi:źródło
git add file.ext
to po prostugit commit --amend
Możesz również użyć
git filter-branch
do tego.To nie jest tak proste, jak banalne
git commit --amend
, ale jest szczególnie przydatne, jeśli masz już kilka scaleń po błędnym komunikacie zatwierdzenia.Zauważ, że to spróbuje przepisać każde zatwierdzenie pomiędzy
HEAD
i błędne zatwierdzenie, więc powinieneśmsg-filter
bardzo mądrze wybrać swoje polecenie ;-)źródło
$flawed_commit^..HEAD
nie$flawed_commit..HEAD
. jak podano na stronie podręcznika: « Polecenie spowoduje przepisanie tylko dodatnich referencji wymienionych w wierszu poleceń (np. jeśli przejdziesz a..b, tylko b zostanie przepisane). »Wolę w ten sposób:
W przeciwnym razie pojawi się nowe zatwierdzenie z nowym identyfikatorem zatwierdzenia.
źródło
-c
Robi kilka rzeczy. Domyślnie korzysta ze starej wiadomości, ale kopiuje również informacje o autorze (osoba i czas).-C
robi to samo, ale nie prosi o edycję wiadomości.fatal: Option -m cannot be combined with -c/-C/-F/--fixup.
Jeśli używasz narzędzia Git GUI, jest przycisk o nazwie Amend ostatnie zatwierdzenie . Kliknij ten przycisk, aby wyświetlić ostatnie pliki zatwierdzeń i wiadomości. Po prostu edytuj tę wiadomość, a możesz zatwierdzić ją za pomocą nowej wiadomości zatwierdzenia.
Lub użyj tego polecenia z konsoli / terminala:
źródło
Możesz użyć Git rebasing . Na przykład, jeśli chcesz zmodyfikować z powrotem, aby zatwierdzić bbc643cd, uruchom
W domyślnym edytorze zmodyfikuj „pick”, aby „edit” w wierszu, którego zatwierdzenie chcesz zmodyfikować. Wprowadź zmiany, a następnie wprowadź je za pomocą
Teraz możesz użyć
zmodyfikować zatwierdzenie, a następnie
aby powrócić do poprzedniego zatwierdzenia głowy.
źródło
git commit --amend
wpłynęła, możesz jej użyćgit show
i wyświetli nową wiadomość.Jeśli chcesz zmodyfikować tylko ostatnią wiadomość zatwierdzenia, wykonaj następujące czynności:
Spowoduje to umieszczenie cię w edytorze tekstu i zmianę ostatniej wiadomości zatwierdzenia.
Jeśli chcesz zmienić trzy ostatnie popełnić wiadomości, czy którekolwiek z popełnić wiadomości do tego momentu, dostawa
HEAD~3
dogit rebase -i
polecenia:źródło
git commit --amend
, a także mówi, że można użyćgit rebase -i HEAD~commit_count
, wszystko co zrobiłem było podłączyć3
docommit_count
.Jeśli musisz zmienić stary komunikat zatwierdzenia w wielu gałęziach (tj. Zatwierdzenie z błędnym komunikatem jest obecne w wielu gałęziach), możesz użyć:
Git utworzy tymczasowy katalog do przepisywania i dodatkowo archiwizuje stare odniesienia
refs/original/
.-f
wymusi wykonanie operacji. Jest to konieczne, jeśli katalog tymczasowy jest już obecny lub jeśli istnieją już odwołania w nim przechowywanerefs/original
. Jeśli tak nie jest, możesz upuścić tę flagę.--
oddziela opcje gałęzi filtrów od opcji wersji.--all
upewni się, że wszystkie gałęzie i tagi są przepisane.Ze względu na kopię zapasową starych odniesień możesz łatwo wrócić do stanu przed wykonaniem polecenia.
Powiedzmy, że chcesz odzyskać swojego mistrza i uzyskać do niego dostęp w oddziale
old_master
:źródło
git commit --amend
naprawić uwag lub dodać pliki zapomniałemgit add
, ale tylko kiedykolwiek wcześniej mamgit push
ed. Używam również,git filter-branch
gdy chcę całkowicie zepsuć historię wersji, ale OP tego nie chce, więc ta odpowiedź wymaga dużego ostrzeżenia zdrowotnego - nie próbuj tego w domu, podglądacze !!Posługiwać się
Aby to szczegółowo zrozumieć, doskonałym postem jest 4. Przepisywanie historii Git . Mówi także o tym, kiedy nie należy używać
git commit --amend
.źródło
git commit --amend
Odpowiedź została już podana (kilka razy), zanim napisał swoją. Dlaczego opublikowałeś go ponownie? Jeśli chcesz dodać link do „Przepisywanie historii Gitów”, możesz edytować jedną z istniejących odpowiedzi lub zostawić komentarz.Modyfikować
Masz tutaj kilka opcji. Możesz to zrobić
pod warunkiem, że jest to twój ostatni zatwierdzenie.
Interaktywna baza danych
W przeciwnym razie, jeśli nie jest to twoje ostatnie zatwierdzenie, możesz zrobić interaktywną bazę,
Następnie w interaktywnej bazie dodajesz edycję do tego zatwierdzenia. Kiedy się pojawi, wykonaj a
git commit --amend
i zmodyfikuj komunikat zatwierdzenia. Jeśli chcesz wycofać zmiany przed tym punktem zatwierdzenia, możesz także użyćgit reflog
i po prostu usunąć ten zatwierdzenie. Potem po prostu zróbgit commit
ponownie.źródło
Jeśli jest to twoje ostatnie zatwierdzenie, po prostu popraw zatwierdzenie:
(Używając flagi
-o
(--only
), aby upewnić się, że zmienisz tylko komunikat zatwierdzenia)Jeśli jest to ukryte zatwierdzenie, skorzystaj z niesamowitej interaktywnej bazy :
Znajdź żądane zatwierdzenie, zmień
pick
nar
(reword
) oraz zapisz i zamknij plik. Gotowy!Samouczek miniaturowego Vima (lub, jak wykonać bazowanie za pomocą tylko 8 naciśnięć klawiszy
3j
cw
r
EscZZ
):vimtutor
jeśli masz czash
j
k
l
odpowiadają klawiszom ruchu ←↓↑→3j
Przesuwa się o trzy linie w dółi
wejść w tryb wstawiania - wpisany tekst pojawi się w plikuc
wyjść z trybu wstawiania i powrócić do trybu „normalnego”u
cofnąćr
zrobić ponowniedd
,dw
,dl
Aby usunąć linię, słowo lub list, odpowiedniocc
,cw
,cl
Aby zmienić linię, słowo lub list, odpowiednio (jakdd
i
)yy
,yw
,yl
Aby skopiować ( „yank”) linię, słowo lub list, odpowiedniop
lubP
wkleić odpowiednio po bieżącej pozycji lub przed nią:w
Enter zapisać (zapisać) plik:q!
Enter wyjść bez zapisywania:wq
EnterlubZZ
zapisać i wyjśćJeśli często edytujesz tekst, przełącz się na układ klawiatury Dvorak , naucz się pisać na klawiaturze i naucz się Vima. Czy warto? Tak.
ProTip ™: Nie bój się eksperymentować z „niebezpiecznymi” poleceniami, które przepisują historię * - Git domyślnie nie usuwa twoich zobowiązań przez 90 dni; możesz je znaleźć w reflog:
* Uważaj na opcje takie jak
--hard
i--force
chociaż - mogą odrzucać dane. * Nie zapisuj także historii oddziałów, z którymi współpracujesz.źródło
nano
? Mówimy o trywialnych modyfikacjach, które należy wprowadzić w pliku tekstowym, a nie o hardcorowym kodowaniu, które wywołałoby wojnę o „najlepszy” edytor tekstu.ddjjpZZ
Przesuwa 2 zatwierdzenie w dół. W podstawowej wiedzy Vima nie ma nic tajemniczego; potrzeba 10 minut, aby poczuć się bardziej komfortowo z Vimem niż z nano.Jeśli używasz Git GUI, możesz zmienić ostatnie zatwierdzenie, które nie zostało wypchnięte za pomocą:
źródło
Używam GUI Git tak często, jak to możliwe, a to daje ci możliwość zmiany ostatniego zatwierdzenia:
Ponadto,
git rebase -i origin/master
jest to ładna mantra, która zawsze przedstawi ci zobowiązania, które wykonałeś na szczycie mistrza, i da ci możliwość zmiany, usunięcia, zmiany kolejności lub zgniecenia. Najpierw nie musisz zdobywać tego skrótu.źródło
Wow, więc jest na to wiele sposobów.
Jeszcze innym sposobem na to jest usunięcie ostatniego zatwierdzenia, ale zachowaj jego zmiany, abyś nie stracił pracy. Następnie możesz wykonać kolejne zatwierdzenie z poprawioną wiadomością. To mogłoby wyglądać mniej więcej tak:
Zawsze tak robię, jeśli zapomnę dodać plik lub dokonać zmiany.
Pamiętaj, aby podać
--soft
zamiast--hard
, inaczej stracisz to zatwierdzenie całkowicie.źródło
git commit --amend
z wyjątkiem tego, że jest to proces dwuetapowy.--amend
zachowa informacje o autorze, ale pytanie dotyczy jedynie zmiany wiadomości.Wszystkim, którzy szukają GUI dla Windows / Mac, aby pomóc w edycji starszych wiadomości (tj. Nie tylko najnowszych), polecam Sourcetree . Kroki, które należy wykonać, są poniżej.
W przypadku zatwierdzeń, które nie zostały jeszcze przekazane do pilota:
Unable to create 'project_path/.git/index.lock': File exists.
gdy próbowałem modyfikować wiele komunikatów zatwierdzania jednocześnie. Nie jestem pewien, na czym dokładnie polega problem, ani czy zostanie to naprawione w przyszłej wersji Sourcetree, ale jeśli tak się stanie, zaleca się ponowne ich rozwiązywanie (wolniej, ale wydaje się bardziej niezawodne).... Lub ... dla zatwierdzeń, które zostały już wypchnięte:
Postępuj zgodnie z krokami w tej odpowiedzi , które są podobne do powyższych, ale wymagają uruchomienia kolejnego polecenia z wiersza poleceń (
git push origin <branch> -f
) w celu wymuszenia przesunięcia gałęzi. Polecam przeczytać wszystko i zachować niezbędną ostrożność!źródło
Jeśli chcesz po prostu edytować najnowsze zatwierdzenie, użyj:
lub
Ale jeśli chcesz edytować kilka zatwierdzeń z rzędu, powinieneś zamiast tego użyć zmiany zasad:
W pliku, takim jak powyższy, napisz
edit/e
lub jedną z pozostałych opcji, a następnie naciśnij Zapisz i wyjdź.Teraz będziesz przy pierwszym błędnym zatwierdzeniu. Wprowadź zmiany w plikach, a zostaną one automatycznie ustawione dla Ciebie. Rodzaj
Zapisz i zamknij to i wpisz
aby przejść do następnej selekcji, aż do zakończenia wszystkich wybranych opcji.
Zauważ, że te rzeczy zmieniają wszystkie twoje skróty SHA po tym konkretnym zatwierdzeniu.
źródło
Jeśli chcesz zmienić tylko ostatnią wiadomość, powinieneś użyć
--only
flagi lub jej skrótu za-o
pomocącommit --amend
:Zapewnia to, że przypadkowo nie poprawisz zatwierdzenia za pomocą inscenizacji. Oczywiście najlepiej mieć odpowiednią
$EDITOR
konfigurację. Następnie możesz pominąć tę-m
opcję, a Git wstępnie wypełni komunikat zatwierdzenia starym. W ten sposób można go łatwo edytować.źródło
git commit --amend
. Pytanie było bardzo szczegółowe, dlatego dłuższe! = Lepsze. Decydujące wzmiankowanie-o
flagi prawdopodobnie zostanie zakopane w pozostałej części informacji. Nie lubię też redagować odpowiedzi, która ma już tyle głosów.--only
opcja z--amend
jest dostępna od wersji 1.3.0 git, nie działała poprawnie, dopóki nie została naprawiona w wersji 1.7.11.3 ( ea2d4ed35902ce15959965ab86d80527731a177c ). Więc prawidłowa odpowiedź z powrotem w 2008 roku prawdopodobnie byłby coś takiego:git stash; git commit --amend; git stash pop
.Zaktualizuj swój ostatni zły komunikat zatwierdzenia o nowy komunikat zatwierdzenia w jednym wierszu:
Lub spróbuj zresetować Git jak poniżej:
Używanie resetowania do dzielenia zatwierdzeń na mniejsze zatwierdzenia
git reset
może pomóc ci również rozbić jeden zatwierdzenie na wiele zatwierdzeń:Tutaj pomyślnie podzieliłeś swój ostatni zatwierdzenie na dwa zatwierdzenia.
źródło
git commit --amend
, dokładnie tak, jak napisano w najczęściej głosowanej odpowiedzi . Dodatkowogit reset --soft HEAD^
działa identycznie jak miękki reset w tej wcześniejszej odpowiedzi , ponieważ oba resetują z powrotem do pierwszego zatwierdzenia nadrzędnego.git reset
do rozwiązania, aby dać pomysł na podzielenie jednego komunikatu zatwierdzenia na wiele komunikatów zatwierdzenia. Ponieważ napotkałem ten problem, kiedy zaczynałem używaćgit
. Czasami może to być naprawdę pomocne. :)Na to pytanie jest wiele odpowiedzi, ale żadna z nich nie wyjaśnia bardzo szczegółowo, jak zmieniać starsze komunikaty zatwierdzania za pomocą Vima . Utknąłem, próbując to zrobić sam, więc tutaj opiszę szczegółowo, jak to zrobiłem, szczególnie dla osób, które nie mają doświadczenia w Vimie!
Chciałem zmienić pięć ostatnich zatwierdzeń, które już wypchnąłem na serwer. Jest to dość „niebezpieczne”, ponieważ jeśli ktoś już z tego wyciągnął, możesz zepsuć wszystko, zmieniając komunikaty zatwierdzania. Jednak gdy pracujesz nad własną małą gałęzią i jesteś pewien, że nikt jej nie pociągnął, możesz to zmienić w następujący sposób:
Powiedzmy, że chcesz zmienić pięć ostatnich zatwierdzeń, a następnie wpisz to w terminalu:
* Gdzie 5 to liczba komunikatów zatwierdzenia, które chcesz zmienić (więc jeśli chcesz zmienić od 10 do ostatniego zatwierdzenia, wpisz 10).
To polecenie przeniesie Cię do Vima, gdzie możesz „edytować” swoją historię zatwierdzeń. Na górze zobaczysz pięć ostatnich zmian:
Zamiast tego
pick
musisz pisaćreword
. Możesz to zrobić w Vimie, wpisująci
. To powoduje przejście do trybu wstawiania . (Widzisz, że jesteś w trybie wstawiania po słowie WSTAW na dole.) Aby zatwierdzić zmiany, które chcesz zmienić, wpiszreword
zamiastpick
.Następnie musisz zapisać i zamknąć ten ekran. Robisz to, przechodząc najpierw do „trybu poleceń”, naciskając Escprzycisk (możesz sprawdzić, czy jesteś w trybie poleceń, jeśli zniknęło słowo WSTAW na dole). Następnie możesz wpisać polecenie, wpisując
:
. Poleceniem zapisywania i wychodzenia jestwq
. Więc jeśli wpiszesz:wq
, jesteś na dobrej drodze.Następnie Vim przejrzy każdą zatwierdzoną wiadomość, którą chcesz przeredagować, i tutaj możesz faktycznie zmienić komunikaty zatwierdzenia. Zrobisz to, przechodząc do trybu wstawiania, zmieniając komunikat zatwierdzenia, przechodząc do trybu poleceń oraz zapisując i kończąc. Zrób to pięć razy, a skończysz z Vimem!
Następnie, jeśli już wypchnąłeś swoje niepoprawne zatwierdzenia, musisz
git push --force
je zastąpić. Pamiętaj, żegit push --force
jest to dość niebezpieczna rzecz, więc upewnij się, że nikt nie wyciągnął z serwera, ponieważ popchnąłeś swoje błędne zobowiązania!Teraz zmieniłeś swoje komunikaty zatwierdzania!
(Jak widzisz, nie jestem zbyt doświadczony w Vimie, więc jeśli użyłem niewłaściwego „żargonu”, aby wyjaśnić, co się dzieje, możesz mnie poprawić!)
źródło
<nitpick>
Na przepełnieniu stosu nie ma „wątków”, ponieważ nie jest to forum dyskusyjne, są tylko „pytania”, „odpowiedzi” i „posty”.</nitpick>
. Ponadto, nie wszystkie wersje Vima są takie same, nie wszystkie pozwalają usuwać znaki w trybie wstawiania (ma to sens, prawda?). Jeśli chcesz zawsze móc usuwać znaki w VimieX
ix
tak zrobisz (małex
znaki przed kursorem,X
zostaną usunięte za). Jeśli popełnisz błąd, możesz gou
wielokrotnie użyć do cofnięcia. Wreszcier
jest skrótemreword
od interaktywnego edytora bazy danych.cw
wpisuje się na jego początku (choć pytanie nie dotyczy vima, zgadzam się).nano
mmedit Midnight Commander.Możesz użyć git-rebase-reword
Jest przeznaczony do edycji każdego zatwierdzenia (nie tylko ostatniego) w taki sam sposób jak
commit --amend
Jego nazwa pochodzi od akcji interaktywnej rebase w celu zmiany zatwierdzenia: „reword”. Zobacz ten post i man -section interaktywny tryb-
Przykłady:
źródło
g c; g rb -i @~9
Wpisałbym : (zatwierdzenie i zmiana bazy), przeniesienie nowego zatwierdzenia tam, gdzie chcę, zmieńcommit
naf
(fixup
) i zapisz. Jeśli chcesz czegoś szybciej, możesz mieć aliasgit commit --fixup=<commit>; git rebase -i --autosquash <commit>^
Dodałem aliasy
reci
irecm
dorecommit (amend)
tego. Teraz mogę to zrobić za pomocągit recm
lubgit recm -m
:źródło
Uświadomiłem sobie, że wcisnąłem commit z literówką. Aby cofnąć, wykonałem następujące czynności:
Ostrzeżenie: wymuszenie wprowadzenia zmian spowoduje zastąpienie gałęzi zdalnej gałęzią lokalną. Upewnij się, że nie zastąpisz niczego, co chcesz zachować. Zachowaj także ostrożność, aby wymusić naepchnięcie poprawionego (przepisanego) zatwierdzenia, jeśli ktokolwiek inny udostępnia Ci gałąź, ponieważ będzie musiał przepisać własną historię, jeśli ma starą kopię zatwierdzenia, którą właśnie przepisałeś.
źródło
Lubię używać następujących:
git status
git add --all
git commit -am "message goes here about the change"
git pull <origin master>
git push <origin master>
źródło
Jeśli nie przekazałeś kodu do zdalnej gałęzi ( GitHub / Bitbucket ), możesz zmienić komunikat zatwierdzenia w wierszu poleceń, jak poniżej.
Jeśli pracujesz nad konkretnym oddziałem, zrób to:
Jeśli już wypchnąłeś kod z niewłaściwą wiadomością, i musisz zachować ostrożność przy zmianie wiadomości. Oznacza to, że po zmianie komunikatu zatwierdzenia i ponownym wypchnięciu go, masz problemy. Aby wygładzić, wykonaj następujące kroki.
Przeczytaj całą moją odpowiedź, zanim to zrobisz.
Ważna uwaga: użycie bezpośredniego wymuszania może spowodować problemy z kodem, które inni programiści pracują nad tym samym oddziałem. Aby uniknąć tych konfliktów, musisz wyciągnąć kod z gałęzi, zanim wymusisz wypchnięcie :
Jest to najlepsza praktyka przy zmianie komunikatu zatwierdzenia, jeśli został już wypchnięty.
źródło