Jak przerwać rebase git z wnętrza vima podczas interaktywnej edycji

138

Kiedy robię interaktywną rebase np

git rebase -i HEAD~3

otwiera się interaktywny edytor rebase (w moim przypadku vim), aby umożliwić mi edycję zatwierdzeń do rebase

pick c843ea2 Set Vim column limit to 80 (OS X)
pick fc32eac Add Bash alias for `pbcopy` (OS X)
....

Jeśli teraz zdecyduję, że chcę przerwać rebase i zamknąć vima, i :qtak uruchomi się rebase. Używam wersji git w systemie 1.9.0.msysgit.0Windows.

Jasne, że mogę po prostu usunąć wszystkie pickwiersze, ale może to być dużo do zrobienia, jeśli przebuduję dłuższą historię. Czy jest inny sposób?

Jak mogę wyjść z interaktywnego edytora rebase (vim) i przerwać rebase?

René Link
źródło
Czy wolisz użyć innego edytora, takiego jak Notatnik? Jeśli tak, mam na to rozwiązanie
Steven Penny
5
git rebase --abort
vanduc1102
@ vanduc1102 Działa dla mnie, szkoda, że ​​nie była to odpowiedź!
C Bauer

Odpowiedzi:

258

Jeśli wyjdziesz z edytora z kodem błędu, rebase zostanie przerwany.

Aby wyjść z kodem błędu na vimie, zrób

:cq

Zobacz tutaj i vimdoc tutaj .

Telmo Costa
źródło
6
Mniej pisania, ten sam wynik
Zach Posten
44

Po prostu usuń wszystkie wiersze, które nie są komentarzami z pliku. Następnie zapisz go w domyślnej ścieżce i zamknij edytor.

W rezultacie git po prostu nie zrobi nic w tej rebase.

Aby usunąć wszystkie linie w vimie, możesz użyć

:%d|x

Następnie zapisz i zakończ.

usuń wszystkie linie pliku w Vimie

Jak wyjść z edytora Vima?

VIM - wiele poleceń w tej samej linii

Steven Penny
źródło
nie dotyczy to zatwierdzeń scalających. spróbuj wykonać interaktywną rebase, aby uwzględnić co najmniej jedno zatwierdzenie scalające i porównać wynik ze stanem oryginalnym.
Mladen B.
9

Jeśli korzystasz na przykład z Notepad ++ w systemie Windows:

CtrlAwybrać wszystko, a następnie Delalbo Backspaceskasować i CtrlSzapisać. Git przerwie rebase, jeśli plik jest pusty.

Możesz także nacisnąć CtrlCw wierszu polecenia, w którym działa git, aby zatrzymać bieżące polecenie rebase. Następnie biegnij, git rebase --abortaby go przywrócić.

CodeManX
źródło
to jest ogólny sposób rozwiązania tego problemu, bez względu na to, czy używasz vima, czy innego edytora. wielkie dzięki! :)
Mladen B.
3

Usuń cały tekst z ekranu edytora tekstu, a następnie zapisz plik z domyślną ścieżką.

mcandre
źródło