Теперь я хочу объединить удаленную ветвь, назвав ее origin/branch1
, с моей локальной ветвью branch1
, так как мой партнер нажал новую фиксацию на ветку1 на пульте после нашего последнего слияния, и я не совершал его с момента его last commit и хотите получить обновление от этой фиксации. Я использовал следующие команды:
$ git fetch origin branch1
Compressing...
*branch branch1 ->FETCH_HEAD
$ git merge origin/branch1
Already up-to-date
Это не то, что я намеревался. На мой взгляд, прежде чем делать это, я использовал fetch, чтобы получить то, что добавил мой партнер, и обновил удаленную ветвь origin/branch1
. Тем не менее, "Уже обновленный" означает, что я не смог получить обновления в моей локальной ветке1. Затем я проверил значение sha1 origin/branch1
на
$ git ls-remote origin
и обнаружил, что он сохранил устаревшее значение старого commit после того, как мы слились в прошлый раз. Он сообщает, что git fetch origin branch1
не может обновить origin/branch1
. Я сделал еще один эксперимент, когда мой партнер создал в своей ветке другую ветку с именем "branch2" и нажал фиксацию в ветке2 на удаленное начало. Затем я все еще использовал
$ git fetch origin branch2
Compressing...
$ git merge origin/branch2
No branch named "origin/branch2"
"Сжатие" сказал мне, что первая команда загрузила что-то в branch2 по происхождению успешно, однако вторая команда сообщила мне, что не было ветки с именем origin/branch2! Таким образом, я пришел к выводу, что не может git fetch origin branchname
обновлять origin/branchname
локально и не создавать удаленную ветвь, если она не существует.
После того, как я заменил git fetch origin branch#
на git fetch origin
, все git merge
работали так, как я ожидал.
Однако я часто вижу комбинацию
$ git fetch remote branch-name
$ git merge remote/branch-name
Итак, мой вопрос в чем разница между git fetch remote
и git fetch remote branch-name
? И в каких условиях мне удастся позволить ему работать по своему желанию этой комбинацией?