Что делает «синхронизация» 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. Или это просто ваше собственное решение?
Джеймс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.