In diesem Bild unten aus der Github(c) Desktop App gibt es diese Schaltfläche “Update from master” (in diesem Fall). Ich habe mich gefragt, ob jemand die Einsicht hatte, was genau git Funktion, die es auslöst. In erster Linie interessiert mich, ob verschmelzen oder rebasieren wird genutzt. (Ich konnte keine Art von Protokollkonsole finden).
Github Desktop: „Update von ” Taste
SoFarther
Die Git-Befehle, die den Schaltflächen in GitHub Desktop zugrunde liegen, sind nicht gut dokumentiert, daher habe ich vor einiger Zeit nachgeforscht. Ich kam zu dem Schluss, dass die Schaltfläche “Aktualisieren von …” versendet wurde
git merge --no-ff -m "Merge <auto_text> <branch_name>" <branch_name>
oder etwas fast identisches mit dem “Vergleichen”-Zweig gesetzt <branch_name>
in der GitHub Desktop-GUI.
Zu dem Ergebnis bin ich folgendermaßen gekommen:
Zuerst habe ich ein Repository, das ich kontrolliere, auf mein GitHub-Konto gegabelt. Dann habe ich das Repository von meinem GitHub-Konto auf meinen lokalen Computer geklont. Als nächstes habe ich eine kleine Änderung am (ursprünglichen) Haupt-Remote-Repository festgeschrieben. Schließlich habe ich verwendet git fetch <remote_name_assigned_to_main_repo>
(<remote_name>
, im Folgenden), um den einzelnen Commit auf meinen lokalen Computer zu bringen. Danach fetch
die Schaltfläche “Aktualisieren von…” leuchtete auf.
Dadurch wurde ein Szenario erstellt, in dem die Verzweigung ausgecheckt wurde, master
in meinem lokalen Repository war ein Commit dahinter master
im Haupt-Remote-Repository. Standardmäßig, git merge <remote_name>
hätte eine Fast-Forward-Merge (ohne Merge-Commit) erzeugt.
Die Verwendung der Schaltfläche “Aktualisieren von …” führte jedoch zu folgendem Ergebnis reflog
Eintrag:
HEAD@{0}: merge <remote_name>/master: Merge made by the 'recursive' strategy.
Und ein Merge-Commit in der log
:
Merge remote-tracking branch '<remote_name>/master'
(Die ‘rekursive’ Strategie “… ist die Standard-Zusammenführungsstrategie beim Ziehen oder Zusammenführen eines Zweigs.” laut Handbuch.)
Ich habe auch ein Szenario erstellt, in dem git rebase
wäre vielleicht eine Option gewesen, sah aber das gleiche Merge-Verhalten.
-
GitHub hat sich wahrscheinlich für dieses Design entschieden und erfordert aus Konservatismus einen Merge-Commit, selbst wenn ein Fast-Forward-Merge oder eine Rebase bevorzugt wird. GitHub Desktop-Benutzer sind wahrscheinlich neu bei Git und ein Merge-Commit kann mit rückgängig gemacht werden
git revert
wohingegen ein Fast-Forward-Merge oder -Rebase dies nicht kann.– SoFarther
4. Dezember 2015 um 11:32 Uhr
Wenn ich den Mauszeiger über die Schaltfläche bewege, heißt es explizit “XX Commits zusammenführen von “
Gehen Sie einfach in das Menü “Branch”, dann auf “Merge into current branch…” und wählen Sie den Branch aus, von dem Sie Ihr “Update” erhalten möchten.
-
Keine Antwort auf diese Frage.
– WerkzeugmacherSteve
12. Mai 2018 um 14:35 Uhr
-
das habe ich aber gesucht!
– Einzelmotor
9. Juni 2019 um 4:41 Uhr
-
Wenn “Master in Dev zusammenführen” steht, bedeutet das, dass alle Inhalte vom Master an Dev gesendet werden? Beides synchron halten?
– Nick Manarin
24. November 2020 um 18:22 Uhr
-
und ich suchte nach der Antwort auf die Frage “Was macht dieser Befehl, wenn mein Zweig nicht auf dem Master, sondern auf einem anderen Zweig basiert?” und schließlich den obigen Vorschlag anstelle der Option “Von Master aktualisieren” verwendet.
– RAM237
29. November 2021 um 16:16 Uhr
Markus S
GitHub selbst sagt, es ist nur git merge <defaultBranch>
.
Um die offiziellen Kommentare zu zitieren Ausgabe im GitHub Desktop-Repo:
Dieser Menüpunkt gibt die aus
update-branch
Nachricht an das Hauptfenster (was wir in der Electron-Terminologie den Renderer nennen). DasupdateBranch
-Methode sucht dann nach Ihrem Standardzweig (normalerweisemaster
). Git-Operationen in der App verwenden die Git-Befehlszeile, was wir also in der App tun, ist nur einegit merge master
in Ihre aktuelle Filiale.)