421 Stimmen

Git merge meldet "bereits aktuell", obwohl es einen Unterschied gibt

Ich habe ein Git-Repository mit 2 Zweigen: Master und Test.

Es gibt Unterschiede zwischen Master- und Testzweigen.

Beide Zweige haben alle Änderungen übertragen.

Wenn ich es tue:

git checkout master  
git diff test

Es erscheint ein Bildschirm voller Änderungen, der die Unterschiede anzeigt. Ich möchte die Änderungen im Testzweig zusammenführen und tue dies auch:

git merge test

Sie erhalten jedoch die Meldung "Bereits aktuell".

Die Untersuchung der Dateien in den einzelnen Zweigen zeigt jedoch deutliche Unterschiede.

Wo liegt das Problem und wie kann ich es lösen?

0 Stimmen

Haben Sie nicht bestätigten geänderten Code?

0 Stimmen

3voto

Stan Bashtavenko Punkte 985

Wenn beim Zusammenführen von Zweig A in Zweig B die Meldung "Bereits auf dem neuesten Stand" erscheint, ist das Gegenteil nicht immer der Fall. Es ist nur wahr, wenn Zweig B ein Nachkomme von Zweig A ist, ansonsten kann Zweig B einfach Änderungen haben, die nicht in A enthalten sind.

Exemple :

  1. Sie erstellen die Zweige A und B aus dem Master
  2. Sie nehmen einige Änderungen in Master vor und führen diese Änderungen nur in Zweig B zusammen (wobei Sie Zweig A nicht aktualisieren oder vergessen, ihn zu aktualisieren).
  3. Sie nehmen einige Änderungen in Zweig A vor und führen A nach B zusammen.

An diesem Punkt meldet das Zusammenführen von A nach B "Bereits auf dem neuesten Stand", aber die Zweige sind unterschiedlich, weil Zweig B Aktualisierungen von Master hat, Zweig A aber nicht.

2voto

satlead Punkte 21

Dieses Szenario trat bei der Verwendung von Git Bash auf.

Unser Repository hat mehrere Zweige und jeder Zweig hat einen anderen Commit-Zyklus und die Zusammenführung erfolgt von Zeit zu Zeit. Old_Branch wurde als Elternteil für New_Branch verwendet

Der alte Zweig wurde mit einigen Änderungen aktualisiert, die mit dem neuen Zweig zusammengeführt werden mussten.

Ich benutze den untenstehenden Pull-Befehl ohne Zweig, um alle Quellen aus allen Zweigen zu erhalten.

git pull origin

Seltsamerweise werden dabei nicht alle Commits aus allen Zweigen gezogen. Hatte es so gedacht, da die angezeigte fast alle Zweige und Tags zeigt.

Also, um dies zu beheben hatte die Old_Branch ausgecheckt zog die neueste mit

git checkout Alte_Filiale

git pull origin Alte_Filiale

Jetzt ausgecheckt New_Branch

git checkout Neue_Filiale

Um sicher zu gehen, habe ich sie gezogen.

git pull origin Neue_Filiale

git merge Alte_Filiale

Und viola bekam Konflikte zu beheben von Old_Branch zu New_Branch :), die erwartet wurde

1voto

Mohammad Rayan Punkte 312

Ich hatte das gleiche Problem. Ich hatte Änderungen im entfernten Projektarchiv vorgenommen, und es wurde immer noch "Bereits auf dem neuesten Stand" angezeigt. Ein erneutes Klonen des Repositorys hat das Problem für mich behoben.

0voto

Deepika Anand Punkte 307

Das ist mir auch passiert. Aber das Szenario war ein wenig anders, ich hatte Master-Zweig, und ich schnitzte aus release_1 (sagen wir) aus. Ich habe einige Änderungen im release_1-Zweig vorgenommen und ihn in den origin-Zweig eingebunden, dann habe ich ssh benutzt und auf dem entfernten Server Ich checkte release_1 erneut aus, indem ich den Befehl git checkout -b release_1 benutzte - der tatsächlich einen neuen Zweig release_! aus dem Master ausgliedert, anstatt den bereits existierenden Zweig release_1 aus origin auszuchecken. Das Problem wurde durch Entfernen des Schalters "-b" gelöst

0voto

Paolo Punkte 17469

Dumm, aber es könnte passieren. Angenommen, dem Namen Ihrer Verzweigung ist ein Fehlerverweis vorangestellt (zum Beispiel #91-fix-html-markup ), wenn Sie diese Zusammenführung durchführen:

$ git merge #91-fix-html-markup

wird es nicht wie vorgesehen funktionieren, da alles nach der # wird ignoriert, weil # beginnt einen Inline-Kommentar.

In diesem Fall können Sie den Zweig umbenennen, indem Sie # oder verwenden Sie einfache Anführungszeichen, um den Namen der Verzweigung zu umschließen: git merge '#91-fix-html-markup' .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X