Що робить "синхронізація" GitHub для Windows?


87

За допомогою GitHub для Windows ви можете "опублікувати" гілку, а потім "синхронізувати" цю гілку з GitHub.

введіть тут опис зображення

Чи є синхронізація в основному a git pullта git push? Або це ще щось? Якщо я хотів би виконати ті самі дії, що й "синхронізація" з командного рядка, що мені робити?

(Це не відкритий код, або я б це просто прочитав.)

Відповіді:


52

Синхронізація виконується, git pull --rebaseа потім, якщо є локальні зміни, це відбуваєтьсяgit push .

Звідси: http://haacked.com/archive/2012/05/21/introducing-github-for-windows.aspx#87318


2
Що станеться, якщо на етапі перебазування виник конфлікт?
Svante

26
@Svante це просто не вдається, і пропонує відкрити оболонку для вас, щоб розібратися в хаосі.
Ось

8
Це все ще правда? Я просто зробив синхронізацію і закінчив коммітуванням злиття, що ніколи не повинно відбуватися, якщо потік: git pull --rebase; git push
Micah Zoltu

Будь-яке пояснення коментаря @Michas Caldwell, я вважаю, що він правий?
benchuk

Можна підтвердити, що натискання Sync щойно зробило git pullзамість a git pull --rebase, тим самим створивши додаткову гілку злиття "master" ... commit.
Лев

42

Оскільки вищевказана відповідь була більше двох років тому, оновлена ​​відповідь на це запитання: через деякі помилки з перебазуванням кнопка "синхронізація" більше не працює git pull --rebase. Натомість він робить, git pullщо буде об’єднуватись, якщо будуть конфлікти, згідно з цим примітками до випуску (див релізу 1.3.0).

Наразі посилання недоступне. Ось нові примітки до випуску .


2
Насправді це не зовсім так. ТІЛЬКИ якщо перебаза даних не працює, вона намагається зробити злиття.
Джоріс Мейс,

Посилання на примітки до випуску порушено.
skolima

2
@JorisMeys Я не впевнений, що ваше твердження відповідає дійсності. З мого досвіду, якщо перед віддаленим комітом є якісь коміти, це створить коміт злиття, навіть коли він може зробити перебазування.
Jerad Rose

@JeradRose Коли я писав свій коментар, ми були в Github Desktop v. 2.x, і ми вже на 3.3 :-) Але ти маєш рацію, я помітив те саме.
Джоріс Мейс,

17

"Синхронізація" - це будь-які дії, необхідні для того, щоб ваша локальна гілка відповідала вашій віддаленій гілці. Якщо у вашій локальній гілці були коміти, яких у вашої віддаленої гілки немає, тоді "синхронізація" висуне вашу гілку. Якби віддалена гілка випередила вашу локальну гілку, то спочатку буде виконуватися "синхронізація" (зокрема git pull --rebase, як пояснив Філ Хаак). "Синхронізація" - це лише ярлик для того, щоб локальний та віддалений дзеркально відображали один одного.

З сайту 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.


Це не просто тягне - це робить "git pull --rebase", що є вирішальною відмінністю. Крім того, порядок у вас неправильний, потягніть перед натисканням.
Andiih

2
@Andiih Моя мова була узагальнена, а не впорядкований перелік операцій. Порядок малося на увазі - зауважте , я кажу «якщо віддалений філія був попереду свого місцевого відділення»? Мій опис також був прямою цитатою з сайту GitHub. Незважаючи на це, відповідь Метта Рікса є більш детальною і заслуговує на те, щоб бути позначеною як відповідь. Я зробив кілька невеликих правок, щоб пояснити будь-яку плутанину у моїй відповіді.
redhotvengeance

Чи синхронізує github також отримання додаткових змін, окрім джерела. Тобто я мав f9rked репо і маю локальний клон форка, що мені справді хочеться - це зміни від
вищого

1
@AaronLS GitHub для Windows створений лише для роботи з одним пультом прямо зараз, а саме origin. Для роботи з кількома пультами вам доведеться використовувати командний рядок. Відповідну інформацію можна знайти тут , у розділі "Кілька пультів дистанційного керування Git та інших пультів дистанційного керування GitHub".
redhotvengeance

4

Щоб додати @ ethanyang в відповідь ,

Відповідно до псевдоніма, налаштованого в gitconfig,

[alias]
...
sync = !git pull && git push

4
Просто з цікавості, що робить! означає у наведеному вище рядку?
Скотт Ромак,

@ScottRomack це означає, що це трактується як команда оболонки: stackoverflow.com/questions/21083933/…
Ніколас Холтаус

У GitHub Desktop вже встановлений цей псевдонім? Якщо так, то де знаходиться цей конфігуратор? Я не бачив цього псевдоніма у своєму глобальному .gitconfig. Або це просто перевизначення вашого власного?
Джеймс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.