Was macht die "Synchronisierung" von GitHub für Windows?

87

Mit GitHub für Windows können Sie einen Zweig "veröffentlichen" und diesen Zweig dann mit GitHub "synchronisieren".

Geben Sie hier die Bildbeschreibung ein

Ist die Synchronisierung im Grunde ein git pullund git push? Oder steckt noch mehr dahinter? Was soll ich tun, wenn ich genau die gleichen Schritte wie "Synchronisieren" über die Befehlszeile ausführen möchte?

(Es ist nicht Open Source, oder ich würde das einfach lesen.)

Jay Bazuzi
quelle

Antworten:

52

Die Synchronisierung wird ausgeführt, git pull --rebaseund wenn lokale Änderungen vorgenommen werden, erfolgt dies git push.

Von hier aus: http://haacked.com/archive/2012/05/21/introducing-github-for-windows.aspx#87318

Matt Rix
quelle
2
Was passiert, wenn während des Rebase-Schritts ein Konflikt auftritt?
Svante
26
@Svante schlägt einfach fehl und bietet an, eine Shell zu öffnen, damit Sie das Chaos beseitigen können. So bin ich auf diese Seite gekommen :-)
Andiih
8
Ist das noch wahr? Ich habe gerade eine Synchronisierung durchgeführt und am Ende ein Merge-Commit durchgeführt, das niemals passieren sollte, wenn der Flow wie folgt lautet: git pull --rebase; Git Push
Micah Zoltu
Irgendeine Erklärung für @Michas Caldwells Kommentar, ich glaube er hat Recht?
Benchuk
Kann bestätigen, dass das Drücken von Sync gerade ein "a" git pullanstelle eines "a" ausgeführt hat git pull --rebase, wodurch ein zusätzlicher Merge-Zweig "master" von ... commit erstellt wird.
Leo
42

Da die obige Antwort vor mehr als zwei Jahren erfolgte, lautet eine aktualisierte Antwort auf diese Frage: Aufgrund einiger Fehler mit Rebase funktioniert die Schaltfläche "Synchronisieren" nicht git pull --rebasemehr. Stattdessen tut es git pulldas tun wird , verschmelzen , wenn es Konflikte gibt, nach dieser Release Notes (siehe Release 1.3.0).

Der obige Link ist derzeit nicht verfügbar. Hier sind die neuen Versionshinweise .

Ethan Yang
quelle
2
Eigentlich stimmt das nicht ganz. NUR wenn eine Rebase nicht funktioniert, wird versucht, eine Zusammenführung durchzuführen.
Joris Meys
Der Link zu den Versionshinweisen ist fehlerhaft.
Skolima
2
@JorisMeys Ich bin nicht sicher, ob Ihre Aussage wahr ist. Nach meiner Erfahrung, wenn es keine Commits vor Mine auf Remote, erstellt es eine Zusammenführung verpflichten, auch wenn es ein rebase tun könnte.
Jerad Rose
@ JeradRose Als ich meinen Kommentar schrieb, waren wir bei Github Desktop v. 2.x und wir sind jetzt bei 3.3 :-) Aber du hast Recht, ich habe das gleiche bemerkt.
Joris Meys
17

"Synchronisieren" sind alle Aktionen, die erforderlich sind, damit Ihr lokaler Zweig mit Ihrem Remote-Zweig übereinstimmt. Wenn Ihre lokale Zweigstelle Commits hatte, die Ihre Remote-Zweigstelle nicht hatte, würde "Synchronisieren" Ihre Zweigstelle pushen. Wenn sich der Remote-Zweig vor Ihrem lokalen Zweig befindet, wird zuerst "Synchronisieren" ausgeführt (insbesondere git pull --rebase, wie von Phil Haack erläutert ). "Sync" ist nur eine Abkürzung, um die lokale und die Remote-Funktion dazu zu bringen, sich gegenseitig zu spiegeln.

Von der GitHub-Site :

The sync button turns the complex workflow of pulling and pushing into a single operation. It notifies you when there are new changes to pull down and lets you quickly share local changes.

redhotvengeance
quelle
Es zieht nicht nur - es macht "Git Pull - Rebase", was ein entscheidender Unterschied ist. Auch die Reihenfolge, die Sie haben, ist falsch, ziehen Sie vor dem Drücken.
Andiih
2
@Andiih Meine Sprache wurde verallgemeinert und keine geordnete Liste von Operationen. Der Auftrag wurde angedeutet - Mitteilung ich sagen „ wenn die Remote - Niederlassung war vor Ihrer lokalen Niederlassung“? Meine Beschreibung war auch ein direktes Zitat von der GitHub-Site. Unabhängig davon ist die Antwort von Matt Rix detaillierter und verdient es, als Antwort markiert zu werden. Ich habe einige kleine Änderungen vorgenommen, um Verwirrung in meiner Antwort zu klären.
Redhotvengeance
Ruft die Github-Synchronisierung neben dem Ursprung auch Upstream-Änderungen ab? Das heißt, ich habe ein Repo erstellt und einen lokalen Klon der Gabel. Was ich wirklich will, sind die Änderungen von stromaufwärts, nicht nur vom Ursprung
AaronLS
1
@AaronLS GitHub für Windows funktioniert derzeit nur mit einer Fernbedienung, nämlich origin. Um mit mehreren Fernbedienungen arbeiten zu können, müssen Sie die Befehlszeile verwenden. Relevante Informationen finden Sie hier unter "Mehrere Git-Fernbedienungen und Nicht-GitHub-Fernbedienungen".
Redhotvengeance
4

Um die Antwort von @ ethanyang zu ergänzen ,

Entsprechend dem in der gitconfig konfigurierten Alias

[alias]
...
sync = !git pull && git push
Ashwin Sinha
quelle
4
Nur aus Neugier, was macht das! meine in der obigen Zeile?
Scott Romack
@ScottRomack bedeutet, dass es als Shell-Befehl behandelt wird: stackoverflow.com/questions/21083933/…
Nicolas Holthaus
Hat GitHub Desktop diesen Alias ​​bereits eingerichtet? Wenn ja, wo befindet sich diese Konfiguration? Ich habe diesen Alias ​​in meinem globalen nicht gesehen .gitconfig. Oder ist das nur eine Überschreibung Ihrer eigenen?
James