Ich habe ein paar Blogs durchgesehen, um ein Merge-Commit zu verstehen, aber nicht ganz klar, was es ist und was die beste Vorgehensweise ist, um es zu vermeiden. Und das Baumdiagramm des Git-Protokolls fügte meinem Verständnis von Merge-Commits weitere Verwirrung hinzu. Hilfe?
git: was genau ist ein Merge-Commit in Git?
Jens Schauder
Ein Merge-Commit ist genau wie ein anderes Commit, der Zustand Ihres Repositorys zu einem bestimmten Zeitpunkt plus die Historie, aus der es entstanden ist.
Das Besondere an einem Merge-Commit ist, dass es mindestens zwei Vorgänger hat, daher macht ein Plain-Vanilla-Diff keinen Sinn, Sie können den Merge nur mit einem der Vorgänger vergleichen, der die Änderungen von den anderen Eltern ergibt )
Um Merge-Commits zu vermeiden, können Sie rebasieren Ihre Änderungen Vor sie in ein entferntes Repository schieben.
-
ok, also im diagramm https://stackoverflow.com/questions/18584376/git-what-exactly-is-a-merge-commit-in-gitstackoverflow.com/q/5860944/2663585 , AB und C sind lokale Commits und A war die letzte lokale Änderung und dann wurde git fetch durchgeführt. Habe ich recht?
– Iowa
3. September 2013 um 5:09 Uhr
-
und vorausgesetzt, ich arbeite an einem öffentlichen Repository, ist es sicher, einen git pull –rebase durchzuführen
– Iowa
3. September 2013 um 5:14 Uhr
-
Nein, C ist das letzte lokale Commit. Ansonsten ist Ihr Verständnis richtig (sprich: dasselbe wie meins)
– Jens Schauder
3. September 2013 um 5:20 Uhr
-
pull –rebase scheint sicher zu sein, siehe diese Antwort auf die Frage, die Sie selbst gepostet haben stackoverflow.com/a/11531552/66686 aber ich habe es bisher nie benutzt. Diese Seite sieht auch interessant aus, obwohl ich sie nur überflogen habe: notes.envato.com/developers/rebasing-merge-commits-in-git
– Jens Schauder
3. September 2013 um 5:21 Uhr
-
@learning2learn Ja, der git merge-Befehl erstellt standardmäßig Merge-Commits, außer wenn ein “Fast Forward Merge” möglich ist. Es ist möglich, git so zu konfigurieren, dass es Merge-Commits vermeidet und stattdessen eine Rebase durchführt. Es ist auch möglich, es so zu konfigurieren, dass Merge-Commits durchgeführt werden, selbst wenn ein schneller Vorlauf möglich ist. Zumindest denke ich, dass es so ist.
– Jens Schauder
9. April 2020 um 13:02 Uhr