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

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

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

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

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


person Jay Bazuzi    schedule 24.08.2012    source источник


Ответы (4)


Синхронизация выполняет git pull --rebase, а затем, если есть локальные изменения, она выполняет git push.

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

person Matt Rix    schedule 21.12.2012
comment
Что произойдет, если возникнет конфликт на этапе перебазирования? - person Svante; 05.02.2013
comment
@Svante просто терпит неудачу и предлагает открыть оболочку, чтобы вы разобрались с беспорядком. Вот так я попал на эту страницу :-) - person Andiih; 06.02.2013
comment
Это все еще правда? Я только что выполнил синхронизацию и получил фиксацию слияния, чего никогда не должно происходить, если поток такой: git pull --rebase; git push - person Micah Zoltu; 20.06.2013
comment
Любое объяснение комментария @Michas Caldwell, я считаю, что он прав? - person benchuk; 24.09.2014
comment
Могу подтвердить, что нажатие Sync только что выполнило git pull, а не git pull --rebase, тем самым создав дополнительную главную ветку Merge из ... фиксации. - person Leo; 09.09.2016
comment
Что такое ребаза? - person Doug Kimzey; 25.08.2019

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

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

person Ethan Yang    schedule 29.11.2014
comment
На самом деле, это не совсем так. ТОЛЬКО если перебазирование не работает, оно пытается выполнить слияние. - person Joris Meys; 17.03.2015
comment
Ссылка на примечания к выпуску не работает. - person skolima; 13.01.2016
comment
@JorisMeys Я не уверен, что ваше утверждение верно. По моему опыту, если есть любые коммиты перед моим на удаленном компьютере, он создаст фиксацию слияния, даже если он может выполнить перебазирование. - person Jerad Rose; 15.12.2016
comment
@JeradRose Когда я писал свой комментарий, мы были на Github Desktop v. 2.x, а сейчас у нас 3.3 :-) Но вы правы, я заметил то же самое. - person Joris Meys; 16.12.2016

«Синхронизация» — это любые действия, необходимые для того, чтобы ваша локальная ветка соответствовала удаленной ветке. Если в вашей локальной ветке были коммиты, которых нет в вашей удаленной ветке, то «синхронизация» подтолкнет вашу ветку. Если удаленная ветвь опережала вашу локальную, то «синхронизация» выполнялась первой (в частности, 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.

person redhotvengeance    schedule 24.08.2012
comment
Он не просто тянет — он делает git pull --rebase, что является важным отличием. Кроме того, порядок у вас неправильный, потяните перед нажатием. - person Andiih; 06.02.2013
comment
@Andiih Мой язык был обобщенным, а не упорядоченным списком операций. Порядок подразумевался - заметьте, я говорю, что удаленная ветвь была впереди вашей локальной ветви? Мое описание также было прямой цитатой с сайта GitHub. Несмотря на это, ответ Мэтта Рикса более подробный и заслуживает того, чтобы быть отмеченным как ответ. Я внес несколько небольших правок, чтобы прояснить путаницу в моем ответе. - person redhotvengeance; 06.02.2013
comment
Синхронизация github также извлекает изменения вверх по течению, в дополнение к происхождению. т.е. У меня есть репозиторий, и у меня есть локальный клон форка, и мне действительно нужны изменения из основной ветки, а не только из источника. - person AaronLS; 27.07.2013
comment
@AaronLS GitHub для Windows сейчас работает только с одним пультом, а именно с origin. Для работы с несколькими пультами вам придется использовать командную строку. Соответствующую информацию можно найти здесь в разделе "Несколько удаленных устройств Git и удаленных устройств, не относящихся к GitHub". - person redhotvengeance; 28.07.2013

Чтобы добавить к ответу @ethanyang,

Согласно псевдониму, настроенному в gitconfig,

[alias]
...
sync = !git pull && git push
person Ashwin Sinha    schedule 12.10.2015
comment
Просто из любопытства, что делает ! значит в строке выше? - person Scott Romack; 14.07.2016
comment
@ScottRomack означает, что он обрабатывается как команда оболочки: заголовок stackoverflow.com/questions/21083933/ - person Nicolas Holthaus; 14.12.2016
comment
У GitHub Desktop этот псевдоним уже настроен? Если да, то где находится этот конфиг? Я не видел этот псевдоним в своем глобальном .gitconfig. Или это просто переопределение вашего собственного? - person james; 18.01.2017