2014-02-08 5 views
106

Я вытащил все удаленные ветки через git fetch --all. Я вижу ветку, которую я хотел бы объединить через git branch -a в качестве пульта дистанционного управления/origin/branchname. Проблема в том, что она недоступна. Я не могу слить или проверить?Git: Слияние удаленной ветви локально

ответ

167

Вы можете ссылаться на эти ветви удаленного отслеживания ~ (перечисленные с git branch -r) с именем их пульта.

Если вы хотите объединить один из этих удаленных филиалов на локальном отделении:

git checkout master 
git merge origin/aRemoteBranch 

Если вы хотите объединить одну из вашей местной ветви на одном из этих удаленного филиала, вам нужно создать локальную ветку на верхней части указанной удаленной ветви первого:

git checkout -b myBranch origin/aBranch 
git merge aLocalBranch 
+0

aLocalBranch? это опечатка? Думаю, вы хотели снова написать «myBranch»? – knocte

+0

@knocte No: «Если вы хотите объединить одну из ваших локальных ветвей на одной из этих удаленных ветвей»: я слияние «aLocalBranch'» с «myBranch'» с «myBranch'», представляющим удаленную ветку ' происхождение/aBranch'. – VonC

57

Всякий раз, когда я делаю слияние, я в ветку, я хочу объединить в (например, «git checkout branch-i-am-working-in»), а затем выполните следующие действия:

git merge origin/branch-i-want-to-merge-from

10

Может быть, вы хотите трек удаленный филиал с местным отделением:

  1. Создать новую локальную ветку: git branch new-local-branch
  2. Установить этот вновь созданный филиал отслеживать удаленный филиал: git branch --set-upstream-to=origin/remote-branch new-local-branch
  3. Введите в эту отрасль: git checkout new-local-branch
  4. Выдвиньте все содержимое удаленного филиала в местное отделение: git pull
+1

Я нашел, что это отличный способ объединить несколько удаленных ветвей в новую ветку, над которой я работаю. Спасибо. –

+0

Удивительный способ объединения нескольких ветвей с помощью одной команды –

0

Если вы уже принес пульт ветку и не git branch -a,
вы получите что-то вроде:

* 8.0 
    xxx 
    remotes/origin/xxx 
    remotes/origin/8.0 
    remotes/origin/HEAD -> origin/8.0 
    remotes/rep_mirror/8.0 

После этого вы можете использовать rep_mirror/8.0, чтобы назначить локально удаленную ветку.

Хитрость в том, что remotes/rep_mirror/8.0 не работает, но rep_mirror/8.0.

Итак, команда вроде git merge -m "my msg" rep_mirror/8.0 делает слияние.

(примечание: это комментарий к @VonC ответ, который я положил его в другой ответ, потому что блоки кода не вписываются в формат комментария.)

Смежные вопросы