Я установил несколько веток удаленного отслеживания в git, но мне кажется, что я никогда не смогу объединить их в локальную ветку после того, как обновлю их с помощью «git fetch».
Например, предположим, что у меня есть удаленная ветка с именем «an-other-branch». Я установил это локально как ветку отслеживания, используя
git branch --track an-other-branch origin/an-other-branch
Все идет нормально. Но если эта ветка обновляется (обычно я перемещаю машину и фиксирую ее с этой машины), и я хочу обновить ее на исходной машине, у меня возникают проблемы с выборкой / слиянием:
git fetch origin an-other-branch
git merge origin/an-other-branch
Каждый раз, когда я это делаю, я получаю сообщение «Уже обновлено», и ничего не сливается.
Однако
git pull origin an-other-branch
всегда обновляет его так, как вы ожидаете.
Кроме того, запуск git diff
git diff origin/an-other-branch
показывает, что есть различия, поэтому я думаю, что у меня неправильный синтаксис.
Что я делаю не так?
РЕДАКТИРОВАТЬ [2010-04-09]: я проверял пару раз, и я определенно не на другой ветке. Должен ли мой git fetch, за которым следует git merge (как показано выше), делать то же самое, что и git pull? Я получу рабочий процесс, показывающий результаты статуса git и т. Д.
git fetch origin an-other-branch
сохраняет полученную подсказкуFETCH_HEAD
, но не сохраняетorigin/an-other-branch
(то есть обычную «ветку удаленного отслеживания»). Таким образом, можно было бы сделать этоgit fetch origin an-other-branch && git merge FETCH_HEAD
, но делать это так, как говорит @Gareth, лучше (или просто использовать git pull ).