Что делает «синхронизация» GitHub для Windows?

87

С помощью GitHub для Windows вы можете «опубликовать» ветку, а затем «синхронизировать» ее с GitHub.

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

Синхронизация в основном git pullи git push? Или это еще не все? Если бы я хотел выполнить те же действия, что и «синхронизация» из командной строки, что мне делать?

(Это не с открытым исходным кодом, или я бы просто читал это.)

Джей Базузи
источник

Ответы:

52

Sync делает, git pull --rebaseа затем, если есть локальные изменения, да git push.

Отсюда: http://haacked.com/archive/2012/05/21/introduction-github-for-windows.aspx#87318

Мэтт Рикс
источник
2
Что произойдет, если на этапе перебазирования возникнет конфликт?
Svante
26
@Svante просто терпит неудачу и предлагает открыть оболочку, чтобы вы разобрались с этим беспорядком.
Вот
8
Это все еще правда? Я только что сделал синхронизацию и в итоге получил фиксацию слияния, чего никогда не должно происходить, если поток: git pull --rebase; git push
Мика Золту
Любое объяснение комментария @Michas Caldwell, я считаю, что он прав?
benchuk
Можно подтвердить, что нажатие на кнопку «Синхронизация» только что сделало, git pullа не а git pull --rebase, создав таким образом дополнительный «мастер» ветки слияния для ... фиксации.
Лев,
42

Поскольку приведенный выше ответ был получен более двух лет назад, обновленный ответ на этот вопрос: из-за некоторых ошибок с перебазированием кнопка «синхронизировать» больше не работает git pull --rebase. Вместо этого он делает , git pullкоторый будет делать слияние , если есть конфликты, в соответствии с этим выпуском нот (см релиза 1.3.0).

Ссылка выше в настоящее время недоступна. Вот новые примечания к выпуску .

Итан Ян
источник
2
На самом деле это не совсем так. ТОЛЬКО если перебазирование не работает, оно пытается выполнить слияние.
Джорис Мейс
Ссылка на примечания к выпуску не работает.
skolima
2
@JorisMeys Я не уверен, что ваше утверждение верно. По моему опыту, если передо мной будут какие-либо коммиты на удаленном компьютере, он создаст коммит слияния, даже если он может выполнить перебазирование.
Джерад Роуз
@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 06
2
@Andiih Мой язык был обобщенным, а не упорядоченным списком операций. Был подразумеваемый порядок - заметьте, я говорю «если удаленная ветка была впереди вашей локальной ветки»? Мое описание также было прямой цитатой с сайта GitHub. Тем не менее, ответ Мэтта Рикса более подробный и заслуживает того, чтобы быть отмеченным как ответ. Я внес небольшие изменения, чтобы прояснить путаницу в моем ответе.
redhotvengeance
Извлекает ли синхронизация github также изменения восходящего потока, помимо origin. Т.е. у меня есть репо, и у меня есть локальный клон вилки, что мне действительно нужно, так это изменений из восходящего потока, а не только из происхождения
AaronLS
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 уже установлен этот псевдоним? Если да, то где находится этот конфиг? Я не видел этого псевдонима в моем global .gitconfig. Или это просто ваше собственное решение?
Джеймс