Udało mi się stworzyć trochę bałaganu w moim lokalnym repozytorium git. Próbowałem naprawić zepsuty zatwierdzenie, korzystając z poniższych instrukcji . Przed uruchomieniem „git commit --amend” (i po git rebase --interactive) zdecydowałem, że moje zmiany są nieprawidłowe i dlatego wykonałem „git reset HEAD --hard”. Nie jest to dobry pomysł, mówię ci.
Teraz interaktywny rebase wydaje się „utknąć”. Git pokazuje bieżącą gałąź jako (| REBASE-m). Każde polecenie (cd .., ls, git rebase ...) w moim repozytorium powoduje następujący błąd:
cat: .git / rebase-merge / head-name: Brak takiego pliku lub katalogu
Oto jak wygląda git rebase --abort:
$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory
HEAD is now at 4c737fb Revert "Modified file names"
rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done': Permission denied
rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge': Directory
not empty
cat: .git/rebase-merge/head-name: No such file or directory
Oto wynik działania git rebase - kontynuuj:
$ git rebase --continue
cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
prev_head must be defined
cat: .git/rebase-merge/head-name: No such file or directory
Jakieś pomysły? Chciałbym przywrócić sytuację do stanu sprzed rozpoczęcia dobrze przemyślanej operacji bazowania.
Oto jak git log --oneline pokazuje sytuację:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
I w porządku.
Używam msysgit v1.7.0.2.
źródło
git rebase --quit
pracował dla mnieOdpowiedzi:
Wygląda na to, że Git próbował usunąć
.git/rebase-merge
katalog, ale nie był w stanie go całkowicie usunąć. Czy próbowałeś skopiować ten folder? Skopiuj również.git/rebase-apply
folder, jeśli jest obecny.źródło
git rebase --abort
(z stackoverflow.com/a/4757777/146044 ) zrobił praca.git rebase --abort
git rebase --abort
to wyczyściło moje nieetapowane zmiany ... błąd jednak zniknąłgit rebase --abort
nadal dałem mi błędy.git rebase --quit
pracował dla mnie.Utknąłem w tym. Utworzyłem plik head-name, a potem napotkałem inny błąd, mówiąc, że nie można znaleźć pliku, więc utworzyłem ten plik. Potem dostałem kolejny błąd, mówiąc, że nie mogę odczytać „.git / rebase-Apply / on”: Brak takiego pliku lub katalogu.
Tak patrzyłem na git dokumentacji dla przebazowania i znalazł inną komendę:
To sprawiło, że wróciłem do mojej gałęzi bez żadnych zmian i mogłem zacząć od nowa, tak jak nowy.
źródło
git rebase --quit
to było!--quit
pracował--abort
nie zrobiono tego, ponieważ rebase został anulowany w połowie$ git rebase --abort
Wyjście:error: could not read '.git/rebase-apply/head-name': No such file or directory
Wreszcie to rozwiązanie rozwiązuje mój problem:git rebase --quit
git rebase --quit
całkowicie mnie uratował. Te same objawy, jak opisano, ale moje pojawiły się po próbie zrobieniagit pull --rebase
czegoś, co z jakiegoś powodu się nie udało. Uwaga: Miałem włączony autostash (git w wersji 2.27.0.windows.1) i jednocześnie miałem VS2019 (wskazał na to repozytorium) - podejrzewam, że jakaś kombinacja tych pomieszała.Miałem podobny problem z powodu procesu zombie vim.exe. Zabicie go w Menedżerze zadań, a następnie
git rebase --abort
naprawienie.źródło
handle
polecenia sysinternals i zobaczyłem, że proces (sh.exe) zablokował plik. Za pomocąpskill <pid>
naprawiłem to dla mnie.Dzięki @Laura Slocum za odpowiedź
Zepsułem wszystko, gdy się opierałem, i miałem odłączoną GŁOWĘ z
co uniemożliwiło mi dokończenie bazowania.
Odłączona HEAD wydaje się zawierać dokładnie mój poprawny pożądany stan bazy, więc pobiegłem
a potem sprawdziłem nową gałąź temp, aby powiązać ją z odłączoną głową.
Porównując go z gałęzią, którą chciałem zmienić, widzę, że nowa gałąź tymczasowa jest dokładnie w stanie, do którego chciałem dotrzeć. Dzięki
źródło
Miałem ten sam problem w Eclipse. Nie można Rebase => przerwać z Eclipse.
Wykonywanie git rebase - abort z Git Bash Pracowało dla mnie.
źródło
W systemie Windows, jeśli nie chcesz lub nie możesz ponownie uruchomić komputera, patrz poniżej.
Zainstaluj Process Explorer: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
W Process Explorer, Znajdź> Uchwyt pliku lub DLL ...
Wpisz nazwę pliku wymienioną w błędzie (dla mojego błędu było to „git-rebase-todo”, ale w powyższym pytaniu „gotowe”).
Process Explorer podświetli proces z blokadą pliku (dla mnie był to „grep”).
Zabij proces, a będziesz mógł przerwać akcję git w standardowy sposób.
źródło
Utwórz plik o tej nazwie:
i niż używać
git rebase
źródło
W moim przypadku jeszcze mocniejszy
git rebase --abort
igit rebase --continue
rzucał:Udało mi się rozwiązać ten problem, ręcznie usuwając:
.git\rebase-apply
katalog.źródło
Używam
git version 2.19.2.windows.1
.jedyną rzeczą, która działała dla mnie, było usunięcie
.git/rebase-apply/
katalogu i wykonaniegit reset --hard
.źródło
W moim przypadku było tak, ponieważ otworzyłem Log SmartGit w odpowiednim projekcie Git i Total Commander w odpowiednim katalogu projektu. Kiedy zamknąłem oba, byłem w stanie dokonać bazy bez żadnego problemu.
Im więcej o tym myślę, tym bardziej podejrzewam, że Total Commander, tj. Windows ma blokadę w otwartym katalogu, z którym git rebase próbował coś zrobić.
Przyjazna rada: kiedy próbujesz coś naprawić, zawsze dokonuj jednej zmiany na raz. ;)
źródło
Próbowałem wszystkich powyższych kroków, ale nic nie działało dla mnie. Wreszcie ponowne uruchomienie komputera zadziałało w przypadku tego problemu: D
źródło
W SublimeText 3 w systemie Windows problem został rozwiązany przez zamknięcie okien Sublime używanych do interaktywnej edycji zatwierdzania.
źródło
Po pomyślnym zakończeniu zmiany liczby X zatwierdzeń, ostatnia komenda musi być
git rebase --continue
. To kończy proces i wychodzi z trybu rebase.źródło
Miałem ten sam problem. Użyłem eksploratora procesów, jak sugerowano w innym poście (nie jestem w stanie znaleźć tego postu), i zorientowałem się, który proces ma blokadę pliku i go zabić. następnie wykonaj --continue lub --abort zgodnie z potrzebami
źródło
W moim przypadku po przetestowaniu wszystkich tych opcji i nadal występowaniu problemów próbowałem
sudo git rebase --abort
i zrobiłem to wszystkoźródło
wypróbowałem wszystko inne oprócz ponownego uruchomienia, co zadziałało dla mnie
rm -fr .git/REBASE_HEAD
źródło
Jeśli przejdziesz poniżej stanu, a rebase już nie działa,
Potem pierwszy bieg
A następnie przywróć poprzedni stan z reflogu,
Za pomocą,
źródło
Używam git w zaćmieniu i miałem ten sam problem.
W końcu odkryłem, że pozycja menu „Rebase ...” została tymczasowo przekształcona w podmenu.
Team-> Rebase -> Abort
To zadziałało dla mnie.
źródło