Я вытащил все удаленные ветки через git fetch --all
. Я вижу ветку, которую я хотел бы объединить с помощью git branch -a
в качестве remotes/origin/branchname. Проблема в том, что она недоступна. Я не могу слить или проверить?
Git: объединить удаленную ветвь
Ответ 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. Я поставил его как еще один ответ, потому что кодовые блоки не вписываются в формат комментариев)