Oto kroki, aby edytować komunikat zatwierdzenia poprzedniego zatwierdzenia ( który nie jest ostatnim zatwierdzeniem ) przy użyciu SourceTree dla systemu Windows w wersji 1.5.2.0 :
Krok 1
Wybierz zatwierdzenie bezpośrednio przed zatwierdzeniem, które chcesz edytować. Na przykład, jeśli chcę edytować zatwierdzenie z komunikatem „FOOBAR!” następnie muszę wybrać zatwierdzenie, które jest tuż przed nim:
Krok 2
Kliknij prawym przyciskiem myszy wybrany zatwierdzenie i kliknij Rebase children...interactively
:
Krok 3
Wybierz zatwierdzenie, które chcesz edytować, a następnie kliknij Edit Message
na dole. W tym przypadku wybieram zatwierdzenie z komunikatem „FOOBAR!”:
Krok 4
Edytuj komunikat zatwierdzenia, a następnie kliknij OK
. W moim przykładzie dodałem „SHAZBOT! SKADOOSH!”
Krok 5
Po powrocie do okna interaktywnej bazy danych kliknij, OK
aby zakończyć proces bazy:
Krok 6
W tym momencie musisz forsować swoje nowe zmiany, ponieważ zmieniłeś zatwierdzenia, które już wypchnąłeś. Jednak obecna wersja SourceTree dla Windows 1.5.2.0 nie pozwala na wymuszone przepychanie się przez GUI, więc w tym celu musisz użyć Git z wiersza poleceń.
Kliknij Terminal
w GUI, aby otworzyć terminal.
Krok 7
Z terminalu naciśnij i wciśnij następujące polecenie:
git push origin <branch> -f
gdzie <branch>
jest nazwa gałęzi, którą chcesz wypchnąć, i -f
oznacza wymuszenie wypchnięcia. Wymuszone zastąpienie zastąpi twoje zobowiązania na zdalnym repozytorium, ale w twoim przypadku jest to w porządku, ponieważ powiedziałeś, że nie udostępniasz repo innym osobom.
Otóż to! Jesteś skończony!
W wersji 1.9.6.1. Dla zatwierdzenia UnPushed.
źródło
Jeśli komunikat komentarza zawiera znaki inne niż angielskie , przy użyciu metody dostarczonej przez user456814, znaki te zostaną zastąpione znakami zapytania. (testowany pod sourcetree Ver2.5.5.0)
Więc muszę użyć następującej metody.
UWAGA : jeśli zatwierdzenie zostało pobrane przez innych członków, zmiany poniżej mogą wywołać u nich chaos.
Krok 1 : W głównym oknie programu Sourcetree zlokalizuj kartę repozytorium i kliknij przycisk „ terminal ”, aby otworzyć konsolę poleceń git.
Krok 2 :
[Sytuacja A] : zatwierdzenie celu jest najnowsze.
1) Wprowadź w konsoli poleceń git
2) Jeśli docelowe zatwierdzenie zostało wypchnięte na zdalne, musisz ponownie nacisnąć siłą. W konsoli poleceń git wprowadź dane
[Sytuacja B] : zatwierdzenie celu nie jest ostatnim.
1) Wprowadź w konsoli poleceń git
Ma zmiażdżyć ostatnie n zatwierdzeń. np. jeśli chcesz edytować wiadomość przed ostatnim, n wynosi 2. To polecenie otworzy okno vi, pierwszym słowem każdego wiersza jest „ wybierz ”, a ty zmienisz „wybierz” na „ przeredaguj ” wiersz chcesz edytować. Następnie wprowadź dane,
:wq
aby zapisać i zamknąć to okno vi. Teraz otworzy się nowe okno vi, w tym oknie wpisujesz nową wiadomość. Użyj również,:wq
aby zapisać i wyjść.2) Jeśli docelowe zatwierdzenie zostało wypchnięte na zdalne, musisz ponownie nacisnąć siłą. W konsoli poleceń git wprowadź dane
Wreszcie : W oknie głównym drzewa bez źródła naciśnij przycisk,
F5
aby odświeżyć.źródło
Aktualizacja
Uwaga: ta odpowiedź została pierwotnie napisana w odniesieniu do starszych wersji SourceTree dla Windows i jest obecnie nieaktualna.
Zobacz moją nową odpowiedź na aktualną wersję SourceTree dla Windows, 1.5.2.0 . Pozostawiam tę odpowiedź w celach historycznych.
Oryginalna odpowiedź
Jeśli chodzi o GUI Git, nie, nie obejmują one wszystkich funkcji Git . Nawet się nie zbliżają . Sugeruję sprawdzenie jednej z odpowiedzi w Jak edytować niepoprawną wiadomość zatwierdzenia w Git? , Git jest na tyle elastyczny, że istnieje wiele rozwiązań ... z wiersza poleceń.
SourceTree może faktycznie być już dostępny z powłoką bash msysgit lub może być w stanie użyć standardowej powłoki poleceń Windows. Tak czy inaczej, otworzysz go z SourceTree, klikając przycisk Terminal:
Tutaj ustawiasz terminal, którego używa SourceTree (bash lub Windows):
Jednym ze sposobów rozwiązania problemu w SourceTree
Biorąc to pod uwagę, oto jeden ze sposobów, w jaki możesz to zrobić w SourceTree. Ponieważ w komentarzach wspomniałeś , że nie masz nic przeciwko „przywróceniu do błędnego zatwierdzenia” (przez co zakładam, że faktycznie masz na myśli resetowanie, co jest inną operacją w Git), oto kroki:
Reset current branch to this commit
, a następnie wybierając opcję twardego resetu z menu rozwijanego.W odniesieniu do tego komentarza :
Czy to oznacza, że jesteś jedyną osobą pracującą nad repozytorium? Jest to ważne, ponieważ zmiana historii repozytorium nie jest trywialna (na przykład poprzez zmianę zatwierdzenia) bez powodowania problemów dla współpracowników. Jednak zakładając, że jesteś jedyną osobą pracującą nad repozytorium, następną rzeczą, którą chciałbyś zrobić, jest wymuszenie wypchnięcia zmienionej historii do pilota.
Pamiętaj jednak, że ponieważ wykonałeś twardy reset błędnego zatwierdzenia, wówczas wymuszone wypychanie powoduje utratę całej pracy, która następuje po nim wcześniej. Jeśli to w porządku, może być konieczne użycie następującego polecenia w wierszu polecenia, aby wykonać wymuszenie, ponieważ nie mogłem znaleźć opcji, aby to zrobić w SourceTree:
Zakłada się również, że BitBucket pozwoli ci wymusić wypchnięcie repo.
W każdym razie powinieneś naprawdę nauczyć się korzystać z Gita z wiersza poleceń, dzięki czemu będziesz bardziej biegły w Git. #ProTip, użyj msysgit i włącz tryb szybkiej edycji we właściwościach terminalu, abyś mógł dwukrotnie kliknąć, aby podświetlić wiersz tekstu, kliknąć prawym przyciskiem myszy, aby skopiować, i kliknąć ponownie prawym przyciskiem myszy, aby wkleić. To jest dość szybkie.
źródło