Как уже упоминалось, git pull
является хорошим ответом здесь. Команда pull
по сути является комбинацией fetch
и merge
; первый перенесет все удаленные коммиты в ваш репозиторий в виде (возможно, новой) ветви, а второй объединит эту ветку с вашей текущей веткой. Конечно, определить, какая ветвь получит слияние, немного хитро. В общем, вы должны настроить это для каждого хранилища. В Git есть особый случай, когда ветка, которая в настоящий момент извлечена, отслеживает удаленную ветвь в хранилище, из которого вы извлекаете, и эта удаленная ветвь является only , в которой есть изменения, и в этот момент Git просто Предположим, вы хотите объединить удаленную ветку с текущей и сделать это автоматически.
Помимо некоторой довольно непрозрачной конфигурации, pull
имеет некоторые другие проблемы, заслуживающие упоминания. В частности: он связан с командой merge
. Другими словами, если вы извлекаете удаленные изменения и у вас есть некоторые изменения в вашей локальной ветке, Git будет вынужден выполнить слияние, чтобы объединить две ветви. В принципе, это просто замечательно, но это наносит ущерб любой перебазировке, которую вы, возможно, захотите сделать в какой-то момент в будущем. Вы упомянули, что ваш вариант использования - это три ваших компьютера. Если бы я был тобой, я бы постарался сохранить свою историю в одной и той же ветке по всем трем как можно линейнее. Не объединяйте машину A с машиной B , перебазируйте изменения B поверх изменений A , чтобы получить один , линейная история на этой логической ветви.
Чтобы сделать это, вам придется использовать команду git fetch
напрямую, а не через pull
. Точнее, вы захотите сделать что-то вроде этого:
git fetch A
git rebase A/master
Замените "A/master
" на имя удаленной ветви, которую вы отслеживаете локально. Любые изменения в вашем локальном репозитории будут переписаны в заголовке A/master
, что даст вам линейную историю, а не историю, которая кратковременно расходится только для объединения нескольких коммитов позже.