Например, будет ли работать следующий код?
[branch "mybranch"]
remote = myremote
merge = refs/heads/mybranch
[branch "mybranch"]
remote = yourremote
merge = refs/heads/mybranch
Нет. Конфигурационные файлы Git достаточно гибкие, чтобы поддерживать это, хотя второй раздел не требуется. То есть вы можете написать это более просто как:
[branch "mybranch"]
remote = myremote
remote = yourremote
merge = refs/heads/mybranch
, но только несколько частей Git используют несколько настроек. 1 Команда git push
, в частности, решает, указали ли вы пульт, и если нет, она получает последняя настройка для branch.<em>branch</em>.remote
(где branch
- текущая ветвь). Затем он решает, указали ли вы refspec, и, если нет, использует ваш параметр push.default
, чтобы решить, как попросить другой Git обновить одно из его имен, основываясь на текущем branch
. совершить. Итак:
- если указать аргумент
remote
, две удаленные настройки не имеют значения;
- если нет, Git берет последний один.
Это означает, что все настройки, кроме последней, становятся неактуальными.
(Есть способы использовать треугольные рабочие процессы, когда вы выбираете из одного репозитория, но отправляете в другой, но это не один. Используйте google search , чтобы найти некоторые.)
1 Команда git fetch
- это команда, которая использует , используя несколько настроек: она принимает все настройки fetch = ...
для любого заданного пульта, когда выполняет по умолчанию git fetch
. То есть:
[remote "origin"]
fetch = +refs/heads/master:refs/remotes/origin/master
fetch = +refs/heads/develop:refs/remotes/origin/develop
создает репозиторий, который во многом похож на клон с одной ветвью, за исключением того, что мы можем назвать клоном с двумя ветвями.