git: Warum “Merge branch ‘master’ of … “? beim Ziehen und Drücken

Lesezeit: 3 Minuten

Ich bin noch git Neuling. Ich habe einige Quelldateien modifiziert und festgeschrieben. Dann habe ich es getan git push. Aber ich habe diesen Fehler.

To /foo/bar/  ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '/foo/bar/' To prevent you from
losing history, non-fast-forward updates were rejected Merge the
remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.

Diese Ablehnung scheint, dass ich es nicht getan habe git pull Vor push. So tat ich git pull. Okay, es gab zwei modifizierte Dateien von anderen.

Dann konnte ich git push erfolgreich.

Frage: In diesem Fall sehe ich ein weiteres Protokoll wie das folgende mit meiner ursprünglichen Commit-Nachricht:

commit 59e04ce13b8afa...
Merge: 64240ba 76008a5
Author: Jone Doe <[email protected]>
Date:   Fri Mar 15 11:08:55 2013 -0700

    Merge branch 'master' of /foo/bar/

Und das ist meine ursprüngliche Commit-Nachricht.

commit 64240bafb07705c...
Author: Jone Doe <[email protected]>
Date:   Fri Mar 15 11:06:18 2013 -0700

    Fixed bugs and updated!

Ich würde gerne verstehen, warum “Merge Branch Master of Location” hinzugefügt wird.

  • Ein mögliches Duplikat von Git pull führt zu überflüssigen „Merge branch“-Meldungen im Commit-Log, das viel detailliertere Antworten enthält

    – Steve Koch

    4. Juli 2016 um 22:58 Uhr


Als Sie a git-pull, wurden Änderungen aus dem Remote-Zweig mit Ihrem lokalen Zweig zusammengeführt. Der automatisch generierte Commit zeigt dies an.

Das Zusammenführen hätte zu Konflikten führen können, die dann manuell gelöst werden müssten. In Ihrem speziellen Fall ist dies nicht passiert und git konnte sich um alles kümmern.

  • Gibt es eine Möglichkeit, ein solches zusätzliches Commit zu vermeiden? Zum Beispiel durch Einfügen der Zusammenführungsänderungen in den aktuellen Commit (Fehler behoben und aktualisiert! Oben)? Weil es den Protokollverlauf irgendwie verschmutzt.

    – kalvn

    30. März 2017 um 8:25 Uhr

  • Git wird versuchen, eine Fast-Forward-Merge durchzuführen, wenn der entfernte Zweig vor dem lokalen Zweig liegt, dh der entfernte Zweig einige Commits zusätzlich zu den Commits des lokalen Zweigs hat. In diesem Fall gibt es kein zusätzliches Commit. Der zusätzliche Commit wird nur angezeigt, wenn die Historien der beiden Zweige divergieren. In einem solchen Fall können Sie den Commit-Verlauf Ihres lokalen Zweigs mit umschreiben git rebase oder git pull --rebase, Durchführen einer Fast-Forward-Merge. Das Rebasing hat jedoch seine eigenen Nachteile, und zusätzliche Merge-Commits sind nicht immer schlecht – sie zeichnen nur den Verlauf der Entwicklung auf.

    – rv

    8. April 2017 um 1:02 Uhr


  • Danke für die Erklärung 🙂

    – kalvn

    26. April 2017 um 14:20 Uhr

Wenn es Änderungen durch andere geben könnte, wäre es vielleicht eine gute Idee, a git pull --rebase (dh fügen Sie Ihre neuen Änderungen hinzu nach die Fernbedienung ändert sich; dies könnte Konflikte finden, die Sie lösen müssten) und dann git push das Ergebnis. Seien Sie vorsichtig, dies erzeugt neue Commits, die vorher nie existiert haben (wie jedes Umschreiben des Verlaufs), aber es ergibt einen sauberen, linearen Verlauf (kein Wirrwarr von Zusammenführungen).

1265250cookie-checkgit: Warum “Merge branch ‘master’ of … “? beim Ziehen und Drücken

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy