Как я ГИТ выборки " и " ГИТ слияния с филиалом дистанционного слежения (например, 'ГИТ тянуть')
Я установил некоторые удаленные ветви отслеживания в git, но я никогда не смогу объединить их в локальную ветвь, как только я обновил их с помощью "git fetch".
например, предположим, что у меня есть удаленная ветвь под названием "an-other-branch". Я установил это локально как ветвь отслеживания с помощью
git branch --track an-other-branch origin/an-other-branch
пока все хорошо. Но если эта ветвь обновляется (обычно я перемещаю машину и совершаю с этой машины), и я хочу обновить ее на исходной машине, я запуск в беду с fetch / merge:
git fetch origin an-other-branch
git merge origin/an-other-branch
всякий раз, когда я делаю это, я получаю "уже актуальное" сообщение, и ничего не сливается.
однако, a
git pull origin an-other-branch
всегда обновляет его, как и следовало ожидать.
кроме того, работает git diff
git diff origin/an-other-branch
показывает, что есть различия, поэтому я думаю, что у меня неправильный синтаксис.
что я делаю не так?
EDIT [2010-04-09]: я проверил пару раз, и я определенно не на другой ветке. Должен ли мой "git fetch", за которым следует "git merge" (как показано выше), делать то же самое, что и git pull? Я получу некоторый рабочий процесс, показывающий результаты состояния git и т. д.
2 ответа:
вы не получаете ветку, вы получаете весь пульт дистанционного управления:
git fetch origin git merge origin/an-other-branch
выбор только одной ветви:
fetch
/merge
иpull
люди часто советуют вам отделить "выборку"от " слияния". Они говорят вместо этого:
git pull remoteR branchB
этого:
git fetch remoteR git merge remoteR branchB
что они не упоминают, так это то, что такая команда fetch будет фактически fetch все ветви из удаленного РЕПО, который является не что делает эта команда pull. Если у вас есть тысячи филиалов в удаленном РЕПО, но вы не хотите видеть их все, вы можете запустить эту непонятную команду:
git fetch remoteR refs/heads/branchB:refs/remotes/remoteR/branchB git branch -a # to verify git branch -t branchB remoteR/branchB
конечно, это смешно трудно запомнить, поэтому, если вы действительно хотите избежать извлечения всех ветвей, лучше изменить свой
.git/config
как