Git: объединить удаленную ветвь

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

Ответ 1

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

Вам нужно получить удаленную ветку:

git fetch origin aRemoteBranch

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

git checkout master
git merge origin/aRemoteBranch

Примечание 1: Для большого репо с длинной историей вы захотите добавить --depth=1 при использовании git fetch.

Примечание 2: Эти команды также работают с другими удаленными репозиториями, так что вы можете настроить origin и upstream если вы работаете на форке.


Противоположный сценарий: если вы хотите объединить одну из ваших локальных веток в удаленной ветке (в отличие от удаленной ветки в локальную, как показано выше), вам нужно сначала создать новую локальную ветку поверх указанной удаленной ветки:

git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch

Идея здесь состоит в том, чтобы объединить "одну из ваших локальных веток" (здесь anotherLocalBranch) с удаленной веткой (origin/aBranch).
Для этого вы сначала myBranch представляющий эту удаленную ветвь: это git checkout -b myBranch origin/aBranch.
И тогда вы можете объединить anotherLocalBranch с ней (с myBranch).

Ответ 2

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

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

Ответ 3

Возможно, вы хотите отслеживать удаленную ветвь с локальной ветвью:

  • Создайте новую локальную ветвь: git branch new-local-branch
  • Установите эту вновь созданную ветвь для отслеживания удаленной ветки: git branch --set-upstream-to=origin/remote-branch new-local-branch
  • Введите в эту ветку: git checkout new-local-branch
  • Потяните все содержимое удаленной ветки в локальную ветвь: git pull

Ответ 4

Сначала извлеките удаленную ветку из источника.

git fetch origin remote_branch_name

Объединить удаленный филиал с локальным филиалом

git merge origin/remote_branch_name

Ответ 5

Если вы уже выбрали удаленную ветку и выполняете 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. Я поставил его как еще один ответ, потому что кодовые блоки не вписываются в формат комментариев)