Git Rebase einen Zweig auf Master fehlgeschlagen, wie zu lösen?

9

Ich habe an einer lokalen Kopie eines Remote-Git-Repos gearbeitet. Ich habe einen Zweig auf meiner lokalen Kopie erstellt, nennen wir ihn "my_branch". Ich habe mich ein paar Mal auf my_branch verpflichtet.

Ich habe kürzlich 'my_branch' auf remote gestellt. Allerdings wusste ich nicht, dass jemand anderes eine Version zum Remote-Master hinzugefügt hat. Also, ich habe es zu meinem lokalen Meister geholt.

Also ... lange Rede kurzer Sinn, mein lokaler Repo sieht so aus (ich versuche hier die Diagrammkonvention zu verwenden) ).

%Vor%

Ich möchte, dass es so aussieht:

%Vor%

Ich habe versucht, my_branch ONTO local master zu erstellen, aber ich habe diese Fehlermeldung erhalten (ich benutze ein visuelles Tool für Git namens GitX):

%Vor%

Was mache ich falsch? Wie soll ich damit umgehen? Wenn ich dies in der Befehlszeile tun würde, was ist der Befehl, um mich in den Zustand im obigen Diagramm zu bringen?

UPDATE 1

Übrigens, ich bin nicht in der Mitte eines Anwendungspatches oder einer anderen Rebase ... zumindest nicht absichtlich. Nachdem ich herausfand, dass die Fernbedienung aktualisiert wurde, NACHDEM ich gedrängt hatte, holte ich ab. Könnte das etwas getan haben, um GitX glauben zu machen, dass ich mitten in einem Anwendungspatch oder einer anderen Rebase bin?

Ich habe auch das Diagramm aktualisiert, um genauer zu sein. Es gibt eine Verzweigung von my_branch. Ich habe es nicht in die ursprüngliche Frage b / c aufgenommen. Ich dachte nicht, dass es etwas ausmachen würde. Ich nehme nur für den Fall ...

mit

UPDATE 2

FYI ... Der Master-Baum für "local" und für "remote" sieht aus wie das Diagramm, das ich gezeichnet habe, außer dass es den sandbox_branch nicht enthält.

    
milesmeow 08.01.2012, 18:53
quelle

1 Antwort

25

git rebase hat ein .git/rebase-apply -Verzeichnis gefunden und setzt daher voraus, dass Sie sich mitten in einer Rebase befinden. Dies wäre der Fall gewesen, wenn es während einer früheren Überweisung zu einem Konflikt gekommen wäre und die Überweisung nicht beendet wurde; Sie haben keinen von git rebase --abort , git rebase --skip oder git rebase --continue ausgeführt (der letzte nach der Konfliktlösung).

Wie auch immer, es ist egal, wie Sie in diesem Zustand gelandet sind, wenn Sie nicht glauben, dass Sie git rebase überhaupt ausgeführt haben. Einfach rm -fr /my_project_directory/.git/rebase-apply , wie die Hilfe andeutet, und Sie sollten jetzt in der Lage sein, die Rebase zu machen.

Aber warte. Da Sie sagen, dass Sie Ihre Verzweigung bereits im Remote-Repository veröffentlicht haben, sollten Sie nicht versuchen, Master auf diese zu refasen. In der Tat, wenn Ihre Fernbedienung nicht Fast-Forward-Commits verweigert (was eine allgemein empfohlene Best Practice zu sein scheint), werden Sie nicht in der Lage sein, die Rebase-Änderungen auf Ihre Fernbedienung zu übertragen. Im Allgemeinen ist es eine schlechte Übung, zu versuchen, ein Commit zu ändern (was git rebase tut), nachdem Sie es auf einem Remote veröffentlicht haben.

    
Siddhartha Reddy 08.01.2012, 19:31
quelle

Tags und Links