Github Desktop: „Update von ” Taste

Lesezeit: 3 Minuten

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).

Geben Sie hier die Bildbeschreibung ein

Benutzer-Avatar
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 fetchdie 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:

[email protected]{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 “

Geben Sie hier die Bildbeschreibung ein

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

Benutzer-Avatar
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). Das updateBranch -Methode sucht dann nach Ihrem Standardzweig (normalerweise master). Git-Operationen in der App verwenden die Git-Befehlszeile, was wir also in der App tun, ist nur eine git merge master in Ihre aktuelle Filiale.)

1179280cookie-checkGithub Desktop: „Update von ” Taste

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

Privacy policy