Jak zatrzymać zatwierdzenie Git, gdy VI jest na ekranie i czeka na komunikat zatwierdzenia?


203

Poprosiłem Gita o wykonanie zatwierdzenia z poziomu git bash, To wywołało VI, jak zawsze.

Chcę teraz anulować zatwierdzenie. Jak mogę zapobiec kontynuowaniu zatwierdzenia od tego momentu?


Warto dodać, że musisz nacisnąć Esc przed wejściem :q!do wyjścia z vima.
M_Merciless

Odpowiedzi:


331

Masz dwie opcje:

  • Podaj pusty komunikat zatwierdzenia. Jeśli jest to nowy zatwierdzenie, a wiadomość nie została jeszcze zapisana, możesz po prostu użyć :q!(wyjść bez zapisywania). Jeśli już zapisałeś (lub zmieniasz poprzednie zatwierdzenie), po prostu usuń cały komunikat dziennika i zapisz ponownie. Można to zrobić za pomocą ggdG+ :wqw Vimie.

  • Poproś edytora o wyjście z niezerowym kodem wyjścia. W Vimie możesz użyć :cq(wyjść z kodem błędu).

Warto zauważyć, że zawsze możesz zresetować kopię roboczą do stanu, w jakim była przed zatwierdzeniem git reset HEAD^.


95
: cq to biznes. Z jakiegoś powodu git działa bez względu na to, czy użyję: q!
Sirex,

2
git reset HEAD ^
odrzuciłby

2
: q! prawdopodobnie nie działa, ponieważ istnieje już zdefiniowana wiadomość, właśnie ją edytujesz.
Papipo

Czkawka: Jeśli git reset HEAD^poprosi o więcej, twoja powłoka może interpretować ^ jako kontynuację linii. Spróbuj git reset "HEAD^", git reset HEAD^^lub git reset HEAD~1zamiast tego na tę odpowiedź: stackoverflow.com/questions/14203952/git-reset-asks-more
Jake Stevens-Haas

75
  • :q!nie działa podczas zmiany zatwierdzenia. Nie aktualizuje komunikatu zatwierdzenia, ale wykonuje zmianę :-(
  • :cq całkowicie przerywa poprawkę.

1
Chciałbym móc dodać kolejne +1. Byłem tu wiele razy, kiedy moja poprawka wybiera niewłaściwe zatwierdzenie.
Wyrmwood

8

Podsumowując:

  • Podczas tworzenia nowego zatwierdzenia (tj. git commit) Zakończ używając :q!.
  • Podczas zmiany (tj. git commit --amend) Usuń komunikat zatwierdzenia (tylko kilka pierwszych wierszy, które nie zaczynają się od #), na przykład przytrzymując v i używając klawiszy strzałek, aby je wybrać, a następnie naciskając klawisz Delete. Wyjdź z, :wqaby zastosować zmiany ! Jeśli użyjesz, :q!zmiany zostaną utracone i użyty zostanie poprzedni komunikat zatwierdzenia.

Podczas korzystania z VIM w obu przypadkach można wyjść z :cq- VIM zakończy działanie z kodem błędu i zatwierdzenie zostanie przerwane.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.