Какая разница между "Push..." и "Push to upstream..." в Eclipse
При использовании "Push to upstream..." в Eclipse новые "локальные" коммиты переносятся в удаленный репозиторий, а рефинансирование удаленной ветки обновляется в локальном репозитории (поэтому master
и origin/master
ссылаются на то же фиксации).
При использовании "Push..." и добавлении push-ссылки на master в окне мастера (refs/heads/*
) новые "локальные" коммиты переносятся в удаленный репозиторий (например, ранее), но удаленная ссылка ref не обновлен в локальном репозитории (поэтому master
ссылается на последнюю фиксацию, но origin/master
не перемещается).
Какая разница между этими двумя способами работы? Является ли это полезным для конкретных децентрализованных рабочих потоков?
Какими будут соответствующие команды git этих двух подходов?
Ответы
Ответ 1
Push to Upstream.. толкает вашу ветку, как вы ожидали бы для ветки удаленного слежения.
Нажмите... открывает диалог и позволяет указать, какие refspecs вы должны отжимать, включая теги, специальные случаи, такие как HEAD: refs/heads/master и т.д.
То, что он не обновляет origin/master, кажется мне ошибкой, или, может быть, они ожидают, что следующая выборка обновит происхождение. Я бы открыл ошибку в https://bugs.eclipse.org/bugs/enter_bug.cgi?product=EGit&component=UI
PW
Ответ 2
Как предложил Павел, я открыл bug на EGit Bugzilla и получил объяснение там.
Когда используется "Push...", EGit PushWizard вызывает команду JGit с URI репозиториев, а не их имена. Поэтому JGit не может обновлять ветвь удаленного отслеживания.
Ошибка все еще открыта, поэтому мы можем надеяться, что в будущей версии "Push...", выполненной из "Конфигурированного удаленного репозитория", будет обновлена ветка удаленного отслеживания.
Ответ 3
Нажмите... открывает диалог и позволяет указать, какие refspecs вы должны отжимать, включая теги, специальные случаи, такие как HEAD: refs/heads/master и т.д.
Дополнительные настройки с помощью push доступны из представлений Git Repositories
или Package Explorer
, но вы должны выбрать правильный вариант.
От Git Repositories
:
- Щелкните правой кнопкой мыши имя репо.
- Выберите
Push
- Нажмите
Next
ИЛИ
- Разверните папку
Remotes
.
- Щелкните правой кнопкой мыши
origin
- Выберите
Configure Push...
- Нажмите кнопку
Advanced
(Вы также можете развернуть origin
, затем щелкните правой кнопкой мыши по Push
и перейдите к Configure Push...
, затем нажмите кнопку Advanced
)
В представлении Package Explorer
- Щелкните правой кнопкой мыши папку проекта (верхний элемент).
-
Team
→ Remote
→ Push
→ Next
(эквивалентно нажатию кнопки "Дополнительно" в приведенных выше шагах.)
ИЛИ
- Щелкните правой кнопкой мыши папку проекта (верхний элемент).
-
Team
→ Remote
→ Configure Push to Upstream...