Ich habe es geschafft, ein kleines Durcheinander in meinem lokalen Git-Repository zu verursachen. Ich habe versucht, ein fehlerhaftes Commit mithilfe der folgenden Anweisungen zu beheben . Vor dem Ausführen von "git commit --amend" (und nach der git rebase --interactive) habe ich festgestellt, dass meine Änderungen falsch sind, und daher "git reset HEAD --hard" ausgeführt. Keine gute Idee, sage ich dir.
Jetzt scheint die interaktive Rebase "hängen zu bleiben". Git zeigt den aktuellen Zweig als (| REBASE-m). Jeder Befehl (cd .., ls, git rebase ...) in meinem Repository gibt den folgenden Fehler aus:
cat: .git / rebase-merge / head-name: Keine solche Datei oder kein solches Verzeichnis
So sieht git rebase --abort aus:
$ 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
Hier ist das Ergebnis von git rebase - weiter:
$ 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
Irgendwelche Ideen? Ich möchte die Situation auf den Zustand zurücksetzen, in dem sie sich befand, bevor ich meine durchdachte Rebase-Operation gestartet habe.
So zeigt git log --oneline die Situation:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
Und das ist gut so.
Ich verwende msysgit v1.7.0.2.
quelle
git rebase --quit
arbeitete für michAntworten:
Es sieht so aus, als hätte Git versucht, das
.git/rebase-merge
Verzeichnis zu entfernen, konnte es jedoch nicht vollständig entfernen. Haben Sie versucht, diesen Ordner zu kopieren? Kopieren Sie auch den.git/rebase-apply
Ordner, falls vorhanden.quelle
git rebase --abort
(von stackoverflow.com/a/4757777/146044 ) hat funktioniert.git rebase --abort
funktionierte nicht)git rebase --abort
Ich habe versucht , meine nicht bereitgestellten Änderungen zu löschen ... der Fehler ist jedoch verschwundengit rebase --abort
gab mir trotzdem die Fehler.git rebase --quit
arbeitete für mich.Ich steckte darin fest. Ich habe die Kopfnamensdatei erstellt und bin dann auf einen anderen Fehler gestoßen, der besagt, dass die On-Datei nicht gefunden werden konnte. Deshalb habe ich diese Datei erstellt. Dann bekam ich einen weiteren Fehler, der besagte, dass '.git / rebase-apply / on' nicht gelesen werden konnte: Keine solche Datei oder kein solches Verzeichnis.
Also habe ich mir die Git- Dokumentation zum erneuten Basieren angesehen und einen anderen Befehl gefunden:
Dies brachte mich ohne Änderungen zurück in meinen Zweig und ich konnte meine Rebase wieder von vorne beginnen, so gut wie neu.
quelle
git rebase --quit
war es!--quit
hat funktioniert.--abort
nicht, weil die Rebase auf halbem Weg abgesagt wurde$ git rebase --abort
Ausgabe:error: could not read '.git/rebase-apply/head-name': No such file or directory
Schließlich behebt diese Lösung mein Problem:git rebase --quit
git rebase --quit
hat mich absolut gerettet. Gleiche Symptome wie beschrieben, aber meine traten auf, nachdem ich versucht hatte, eine zu machengit pull --rebase
, was aus irgendeinem Grund fehlschlug. Hinweis: Ich hatte Autostash aktiviert (Git-Version 2.27.0.windows.1) und VS2019 gleichzeitig ausgeführt (auf dieses Repo gerichtet).Ich hatte ein ähnliches Problem aufgrund eines zombie vim.exe-Prozesses. Beenden Sie es im Task-Manager, gefolgt von einem
git rebase --abort
Fehler.quelle
handle
Befehl sysinternals verwendet und festgestellt, dass bei einem Prozess (sh.exe) die Datei gesperrt war. Verwenden Siepskill <pid>
es für mich behoben.Danke @Laura Slocum für deine Antwort
Ich habe die Dinge beim Rebasieren durcheinander gebracht und einen abgetrennten KOPF mit einem bekommen
das hinderte mich daran, die Umbasierung zu beenden.
Der abgetrennte KOPF scheint genau meinen korrekten gewünschten Basiszustand zu enthalten, also rannte ich
und danach habe ich einen neuen temporären Zweig ausgecheckt, um ihn an den abgetrennten Kopf zu binden.
Wenn ich es mit dem Zweig vergleiche, den ich neu aufbauen wollte, kann ich sehen, dass der neue temporäre Zweig genau in dem Zustand ist, den ich erreichen wollte. Vielen Dank
quelle
Hatte das gleiche Problem in Eclipse. Rebase konnte nicht wiederhergestellt werden => von Eclipse abbrechen.
Das Ausführen von git rebase --abort von Git Bash hat für mich funktioniert .
quelle
Wenn Sie unter Windows nicht bereit oder nicht in der Lage sind, den Computer neu zu starten, siehe unten.
Installieren Sie den Prozess-Explorer: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
Suchen Sie im Prozess-Explorer nach Suchen> Dateihandle oder DLL ...
Geben Sie den im Fehler genannten Dateinamen ein (für meinen Fehler war es 'git-rebase-todo', aber in der obigen Frage 'erledigt').
Der Prozess-Explorer hebt den Prozess hervor, der eine Sperre für die Datei enthält (für mich war es 'grep').
Wenn Sie den Prozess beenden, können Sie die Git-Aktion auf die übliche Weise abbrechen.
quelle
Erstellen Sie eine Datei mit diesem Namen:
und als verwenden
git rebase
quelle
In meinem Fall leichter
git rebase --abort
undgit rebase --continue
warf:Ich konnte dieses Problem beheben, indem ich das
.git\rebase-apply
Verzeichnis manuell entfernte .quelle
In meinem Fall lag es daran, dass ich SmartGits Log im jeweiligen Git-Projekt und Total Commander im jeweiligen Projektverzeichnis geöffnet hatte. Als ich beide geschlossen habe, konnte ich problemlos wiederherstellen.
Je mehr ich darüber nachdenke, desto mehr vermute ich, dass Total Commander, dh Windows eine Sperre für das geöffnete Verzeichnis hat, mit dem die Git-Rebase etwas versucht hat.
Freundlicher Rat: Wenn Sie versuchen, etwas zu reparieren, nehmen Sie immer jeweils eine Änderung vor. ;)
quelle
Ich benutze
git version 2.19.2.windows.1
.Das einzige, was für mich funktioniert hat, war das
.git/rebase-apply/
Verzeichnis zu entfernen und agit reset --hard
.quelle
Ich habe alle oben genannten Schritte ausprobiert, aber nichts hat bei mir funktioniert. Schließlich funktionierte der Neustart des Computers für dieses Problem: D.
quelle
Mit SublimeText 3 unter Windows wird das Problem behoben, indem nur die für die interaktive Commit-Edition verwendeten Sublime-Fenster geschlossen werden.
quelle
Sobald Sie die Neubasierung der X-Anzahl von Commits zufriedenstellend abgeschlossen haben, muss der letzte Befehl lauten
git rebase --continue
. Damit ist der Vorgang abgeschlossen und der Rebase-Modus wird beendet.quelle
Ich hatte das gleiche Problem. Ich habe den Prozess-Explorer wie in einem anderen Beitrag vorgeschlagen verwendet (ich kann diesen Beitrag nicht finden) und herausgefunden, welcher Prozess eine Sperre für die Datei hat, und sie beendet. Führen Sie dann --continue oder --abort nach Bedarf aus
quelle
In meinem Fall habe ich es versucht, nachdem ich all diese Optionen getestet hatte und immer noch Probleme hatte,
sudo git rebase --abort
und es hat das Ganze getanquelle
Ich habe alles andere als einen Neustart versucht. Was bei mir funktioniert hat, ist
rm -fr .git/REBASE_HEAD
quelle
Wenn Sie unter den Status gelangen und Rebase nicht mehr funktioniert,
Dann zuerst laufen,
Und dann den vorherigen Status aus dem Reflog wiederherstellen,
Verwenden von,
quelle
Ich benutze Git in Eclipse und hatte das gleiche Problem.
Schließlich stellte ich fest, dass der Menüeintrag "Rebase ..." vorübergehend in ein Untermenü umgewandelt wurde.
Team-> Rebase -> Abbruch
Es hat bei mir funktioniert.
quelle