У меня есть проект с несколькими ветками. Я отправлял их на GitHub , и теперь, когда над проектом работает кто-то другой, мне нужно извлечь их ветки из GitHub. Он отлично работает в мастере. Но скажем, что кто-то создал ветку xyz
. Как я могу извлечь ветку xyz
из GitHub и объединить ее xyz
с моей веткой localhost
?
На самом деле у меня есть мой ответ здесь: Push и тянуть ветви в Git
Но я получаю сообщение об ошибке "! [Отклонено]" и что-то о "не быстрой перемотке вперед".
Какие-либо предложения?
git fetch origin --force
», но, пожалуйста, прочитайте документацию, прежде чем делать это.Ответы:
Это потому, что Git не может объединить изменения из веток в ваш текущий мастер. Допустим, вы отметили ветку
master
и хотите объединить ее в удаленной веткеother-branch
. Когда вы делаете это:Git в основном делает это:
То есть, за
pull
ним простоfetch
следуетmerge
. Однако, когдаpull
-ing, Git будет сливаться только в томother-branch
случае, если сможет выполнить ускоренное слияние. Быстро вперед слияние слияние , в котором глава филиала вы пытаетесь слиться является прямым потомком главы филиала вы хотите объединить. Например, если у вас есть это дерево истории, то слияниеother-branch
приведет к ускоренному слиянию:Тем не менее, это не будет ускоренным слиянием:
Чтобы решить вашу проблему, сначала загрузите удаленную ветку:
Затем объедините его с вашей текущей веткой (я предполагаю, что это так
master
) и исправьте все конфликты слияний:источник
git fetch -f
исправило мою проблему! Спасибо!xzy
с локальной ветвьюmaster
, что было не тем, что подразумевалось в исходном вопросе; "Как я могу извлечь ветку xyz из GitHub и объединить ее с веткой xyz на моем локальном хосте?"Просто отслеживайте свои удаленные ветви явно, и простой
git pull
будет делать то, что вы хотите:Последнее является локальной операцией.
Или еще больше вписывается в документацию GitHub по разветвлению :
источник
Вы можете вытянуть ветку к ветке с помощью следующих команд.
Когда вы находитесь в основной ветке, вы также можете сначала проверить ветку, например:
Это создает новую ветку "xyz" из мастера и непосредственно проверяет ее.
Тогда вы делаете:
Это тянет новую ветку к вашей местной
xyz
ветке.источник
Лучший способ это:
источник
git fetch
захватит последний список веток.Теперь вы можете
git checkout MyNewBranch
Выполнено :)
Для получения дополнительной информации см. Документы: git fetch
источник
Я не уверен, что полностью понимаю проблему, но вытаскивание существующей ветки выполняется следующим образом (по крайней мере, это работает для меня :)
Это предполагает, что ваша локальная ветвь создана из источника / BRANCH.
источник
Это помогло мне получить удаленную ветку, прежде чем объединить ее с другими:
источник
Проще говоря, если вы хотите вытащить из GitHub ветку
the_branch_I_want
:источник
Обычно, если у вас есть только репо, назначенный вашему коду, тогда gitreponame будет источником.
Если вы работаете с двумя репозиториями, например, один локальный, а другой для удаленного, например, вы можете проверить список репозитория из git remote -v . это показывает, сколько репо назначено вашему текущему коду.
BranchName должно существовать в соответствующем gitreponame.
Вы можете использовать следующие две команды для добавления или удаления репо
источник
Вы также можете сделать
исправить конфликты слияния, если таковые имеются
-r для перебазирования. Это сделает вашу структуру ветвей из
в
Это приведет к более чистой истории. Примечание. В случае, если вы уже выдвинули свою ветвь в начало (или любой другой удаленный узел), вам, возможно, придется принудительно продвигать ветку после перезагрузки.
источник
я сделал
Вместо
По предложению @innaM. Когда я использовал вышестоящую версию, она говорила «роковая: недопустимое имя объекта:« upstream / remote_branch_name »». Я не сделал
git fetch origin
как предложенный комментарий, но вместо этого просто заменилupstream
наorigin
. Я думаю, они эквивалентны.источник
для вытягивания ветки из GitHub вы можете использовать
Убедитесь, что имя ветви точно такое же.
источник