Co robi „synchronizacja” GitHub dla Windows?

87

Dzięki GitHub dla Windows możesz „opublikować” gałąź, a następnie „zsynchronizować” tę gałąź z GitHubem.

wprowadź opis obrazu tutaj

Czy synchronizacja to w zasadzie a git pulli git push? Czy może to coś więcej? Co mam zrobić, jeśli chciałbym wykonać dokładnie te same czynności, co „synchronizacja” z wiersza poleceń?

(To nie jest Open Source, albo po prostu to przeczytałem).

Jay Bazuzi
źródło

Odpowiedzi:

52

Synchronizacja robi, git pull --rebasea jeśli są zmiany lokalne, robi git push.

Stąd: http://haacked.com/archive/2012/05/21/introducing-github-for-windows.aspx#87318

Matt Rix
źródło
2
Co się stanie, jeśli na etapie rebase wystąpi konflikt?
Svante
26
@Svante po prostu zawodzi i oferuje otwarcie powłoki, aby uporządkować bałagan. I tak trafiłem na tę stronę :-)
Andiih,
8
Czy to nadal prawda? Właśnie wykonałem synchronizację i skończyło się na zatwierdzeniu przez scalanie, co nigdy nie powinno mieć miejsca, jeśli przepływ to: git pull --rebase; git push
Micah Zoltu
Jakieś wyjaśnienie komentarza @Michasa Caldwella, myślę, że ma rację?
benchuk
Potwierdza, że ​​naciśnięcie przycisku Sync właśnie teraz wykonało a git pullzamiast a git pull --rebase, tworząc w ten sposób dodatkowy „master” gałęzi Merge z… commit.
Leo,
42

Ponieważ powyższa odpowiedź została udzielona ponad dwa lata temu, zaktualizowana odpowiedź na to pytanie brzmi: z powodu błędów w rebase przycisk „synchronizacja” już nie działa git pull --rebase. Zamiast tego robi to, git pullco nastąpi scalenie, jeśli wystąpią konflikty, zgodnie z informacjami o wydaniu (patrz wydanie 1.3.0).

Powyższy link nie jest obecnie dostępny. Oto informacje o nowej wersji .

Ethan Yang
źródło
2
Właściwie to nie do końca prawda. TYLKO jeśli rebase nie działa, próbuje wykonać scalenie.
Joris Meys
Link do informacji o wersji jest uszkodzony.
skolima
2
@JorisMeys Nie jestem pewien, czy twoje stwierdzenie jest prawdziwe. Z mojego doświadczenia wynika, że jeśli są jakieś zmiany przed moimi zdalnymi, utworzy to zatwierdzenie scalające, nawet jeśli może wykonać rebase.
Jerad Rose
@JeradRose Kiedy napisałem swój komentarz, byliśmy na Github Desktop v. 2.x, a teraz mamy 3,3 :-) Ale masz rację, zauważyłem to samo.
Joris Meys
17

„Synchronizacja” to wszelkie czynności konieczne do dopasowania lokalnego oddziału do zdalnego. Jeśli twój lokalny oddział miał zatwierdzenia, których nie zrobił twój zdalny oddział, wtedy "synchronizacja" wypchnie twoją gałąź. Jeśli zdalny oddział znajdował się przed twoim lokalnym, wtedy „synchronizacja” ściągnęłaby najpierw (dokładnie git pull --rebase, jak wyjaśnił Phil Haack). „Synchronizacja” to tylko skrót do uzyskania kopii lustrzanej między lokalnym i zdalnym.

Z witryny GitHub :

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
źródło
Nie tylko ciągnie - robi „git pull --rebase”, co jest kluczową różnicą. Również kolejność, którą masz, jest zła, pociągnij przed pchnięciem.
Andiih
2
@Andiih Mój język został uogólniony, a nie uporządkowana lista operacji. Kolejność była dorozumiana - zauważ, że mówię „jeśli zdalny oddział był przed twoim lokalnym oddziałem”? Mój opis był również bezpośrednim cytatem z serwisu GitHub. Niezależnie od tego odpowiedź Matta Rixa jest bardziej szczegółowa i zasługuje na to, aby ją oznaczyć jako odpowiedź. Wprowadziłem kilka drobnych zmian, aby wyjaśnić wszelkie niejasności w mojej odpowiedzi.
redhotvengeance
Czy synchronizacja Github pobiera również zmiany nadrzędne, oprócz pochodzenia. To znaczy, miałem f9rked repo i mam lokalny klon forka, to, czego naprawdę chcę, to zmiany z upstream, a nie tylko pochodzenia
AaronLS
1
@AaronLS GitHub dla Windows jest teraz zbudowany do pracy tylko z jednym pilotem, a mianowicie origin. Aby pracować z wieloma pilotami, musisz użyć wiersza poleceń. Odpowiednie informacje można znaleźć tutaj , w sekcji „Wiele pilotów Git i innych niż GitHub”.
redhotvengeance
4

Aby dodać do @ ethanyang za odpowiedź ,

Zgodnie z aliasem skonfigurowanym w gitconfig,

[alias]
...
sync = !git pull && git push
Ashwin Sinha
źródło
4
Tylko z ciekawości, co robi! oznacza w powyższej linii?
Scott Romack,
@ScottRomack oznacza to, że jest traktowane jako polecenie powłoki: stackoverflow.com/questions/21083933/…
Nicolas Holthaus
Czy GitHub Desktop ma już skonfigurowany ten alias? Jeśli tak, gdzie znajduje się ta konfiguracja? Nie widziałem tego aliasu w moim globalnym .gitconfig. A może to tylko Twoja własna zmiana?
james