2017-06-15 3 views
0

Ich versuche, 3 Commits neu zu ordnen.Git Rebase auf einer einfachen Commit-Nachbestellung fehlschlagen, ohne irgendeine Aktion

Mein aktueller Zustand ist:

A -> B -> C 

Ich möchte und dazu bekommen rebase:

A -> C -> B 

(nur Swap verpflichtet B und C)

ich den Befehl ausführen git rebase -i A .

Mein Editor öffnet sich, ich ändere die getroffene Auswahl und speichern. Nichts passiert.

Ich stelle fest, die folgenden:

Wenn ich den rebase Befehl ausführen, öffnet sich mein Editor, sondern auch schon sehe ich folgendes im Terminal:

Successfully rebased and updated refs/heads/master. 
rm: cannot remove `/path/to/git/repo/.git/rebase-merge': Directory not empty 

Auch wenn ich noch nicht nichts getan nach dem Ausführen des Rebase-Befehls (Ich habe noch nichts in meinem Editor bearbeitet).

Was fehlt mir?

+0

Bitte richtiges foramtting verwenden. – SteveFest

+0

Was ist dein Editor? – mkrieger1

+0

Beenden Sie nach dem Bearbeiten der Auswahl und dem Speichern auch den Editor? – mkrieger1

Antwort

0

Es mag zunächst nicht so erscheinen, aber das ist im Wesentlichen ein Duplikat von How can I use gvim for svn commit messages under Windows? Das ist ein vim/gvim Flags und/oder Einstellungen Problem. (Dieses Problem tritt im Allgemeinen bei vielen GUI-basierten Editoren auf, nicht nur bei gvim, aber die Heilung für jeden hängt vom GUI-basierten Editor ab.) Sie sagen Git, gvim auszuführen, und Git tut dies in einer Weise, in der gvim liefert eine Anfrage "Bitte bearbeiten Sie diese andere Datei" an eine eigene Instanz.

Nachdem die Anfrage gestellt wurde, sagt der gvim, dass Git lief: "Alles fertig!" Es wird erfolgreich beendet und Git denkt, dass dies bedeutet "alles Bearbeitung". Git liest die Datei, die natürlich ist nicht done-some-andere Instanz von gvim läuft jetzt, so dass Sie die Direktiven-Datei bearbeiten können und Git sieht die ursprüngliche unveränderte Datei und macht eine No-Op-Rebase.

Das Heilmittel ist, das gvim anzuweisen, das Git läuft, um zu bleiben und zu warten, bis die angeforderte Dateibearbeitung abgeschlossen ist. Dann, wenn der gvim, den Git ausgeführt hat, beendet wurde, ist die Datei fertig, und Git kann fortfahren, sie zu lesen. Ich benutze diesen speziellen Editor und Modus nicht so weiß nicht, ob -f als Start-Flag oder die .vimrc Einstellung (set guioptions+=f) ist überlegen.

(abgesehen: das Versagen, das Verzeichnis zu entfernen tritt auf, weil Gvim eine .swp Datei innerhalb sie erstellt hat.)

+0

-f arbeitete wie ein Charme. Danke für die ausführliche Erklärung. – galp