Edytuj komunikat zatwierdzenia w Windows SourceTree (już przekazany do zdalnego)

202

Jak edytować niepoprawny komunikat zatwierdzenia w SourceTree bez dotykania wiersza poleceń?

Dodatkowe Szczegóły:

  • To nie jest najnowsze zatwierdzenie.
  • Wszystko zostało już przekazane Bitbucket.
  • To jest prywatne repozytorium i jestem jedynym współpracownikiem.
  • Nie mam nic przeciwko utracie poprzednich zatwierdzeń, ponieważ mogę je ponownie zatwierdzić w dowolnym momencie.
  • Nie chcę jednak stracić żadnej modyfikacji kodu.

Wynik:

  • Ponieważ wydaje się to obecnie niemożliwe według twoich komentarzy i odpowiedzi, utworzę nowe repozytorium i zacznę od nowa. Dziękuję wszystkim za pomoc!
Społeczność
źródło

Odpowiedzi:

425

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:

Wybór zatwierdzenia przed tym, który chcę edytować.

Krok 2

Kliknij prawym przyciskiem myszy wybrany zatwierdzenie i kliknij Rebase children...interactively:

Wybieranie „Interaktywnie uruchamiaj dzieci”.

Krok 3

Wybierz zatwierdzenie, które chcesz edytować, a następnie kliknij Edit Messagena dole. W tym przypadku wybieram zatwierdzenie z komunikatem „FOOBAR!”:

Wybierz zatwierdzenie, które chcesz edytować.

Krok 4

Edytuj komunikat zatwierdzenia, a następnie kliknij OK. W moim przykładzie dodałem „SHAZBOT! SKADOOSH!”

Edytuj komunikat zatwierdzenia

Krok 5

Po powrocie do okna interaktywnej bazy danych kliknij, OKaby zakończyć proces bazy:

Kliknij OK, aby zakończyć.

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 Terminalw GUI, aby otworzyć terminal.

Kliknij 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 -foznacza 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!


źródło
4
Kroki są w zasadzie takie same w wersji dla komputerów Mac.
race_carr
2
Uwaga: jeśli chcesz rozpocząć wiadomość zatwierdzenia od # to nie zadziała, git traktuje ją jako komentarz i informuje, że wiadomość zatwierdzenia jest pusta!
Daniel Edholm Ignat
1
„To jest to! Gotowe!” - To takie proste, że nie wiem co, jak złapanie królika. Zamiast tworzenia funkcji programu, dla tak ważnej i często widującej sytuacji. Kiedy pośpieszyłeś literówkę, musisz zresetować głowę i ponownie utworzyć nowe zatwierdzenie.
Rantiev
67
Zabawne - zastanawiam się, dlaczego nie robią prostej opcji „Edytuj wiadomość zatwierdzenia”.
Jonathan Aquino
1
Force Push jest teraz dostępny przez GUI. W przeciwnym razie IDEALNY :-)
LaTisha
43

W wersji 1.9.6.1. Dla zatwierdzenia UnPushed.

  1. Kliknij wcześniej zatwierdzony opis
  2. Kliknij ikonę Zatwierdź
  3. Wpisz nową wiadomość zatwierdzenia i wybierz „ Popraw najnowsze zatwierdzenie ” z menu Opcje zatwierdzania .
  4. Potwierdź swoją wiadomość.
Frank
źródło
13

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

git commit --amend -m "new comment message"

2) Jeśli docelowe zatwierdzenie zostało wypchnięte na zdalne, musisz ponownie nacisnąć siłą. W konsoli poleceń git wprowadź dane

git push --force

[Sytuacja B] : zatwierdzenie celu nie jest ostatnim.

1) Wprowadź w konsoli poleceń git

git rebase -i HEAD~n

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, :wqaby zapisać i zamknąć to okno vi. Teraz otworzy się nowe okno vi, w tym oknie wpisujesz nową wiadomość. Użyj również, :wqaby zapisać i wyjść.

2) Jeśli docelowe zatwierdzenie zostało wypchnięte na zdalne, musisz ponownie nacisnąć siłą. W konsoli poleceń git wprowadź dane

git push --force


Wreszcie : W oknie głównym drzewa bez źródła naciśnij przycisk, F5aby odświeżyć.

Hosi Golden
źródło
12

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ź

ponieważ jestem w systemie Windows, nie mam narzędzia wiersza polecenia ani nie wiem, jak go używać :( Czy to jedyny sposób, aby to rozwiązać? GUI nie obejmuje wszystkich funkcji gita? - Original Poster

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:

wprowadź opis zdjęcia tutaj

Tutaj ustawiasz terminal, którego używa SourceTree (bash lub Windows):

wprowadź opis zdjęcia tutaj

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:

  1. Wykonaj twardy reset w SourceTree do złego zatwierdzenia, klikając go prawym przyciskiem myszy i wybierając Reset current branch to this commit, a następnie wybierając opcję twardego resetu z menu rozwijanego.wprowadź opis zdjęcia tutaj
  2. Następnie kliknij przycisk Zatwierdź
  3. Kliknij pole wyboru na dole z napisem „Zmień najnowsze zatwierdzenie”. wprowadź opis zdjęcia tutaj
  4. Wprowadź zmiany, które chcesz wprowadzić do wiadomości, a następnie ponownie kliknij Zatwierdź. Voila!

W odniesieniu do tego komentarza :

jeśli nie jest to możliwe, ponieważ zostało już przesłane do Bitbucket, nie miałbym nic przeciwko utworzeniu nowego repozytorium i rozpoczęciu od nowa.

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:

git push remote-repo head -f

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.

Społeczność
źródło