Можем ли мы настроить апстрим в разных удаленных репозиториях - PullRequest
0 голосов
/ 12 января 2019

В конфигурационном файле ветка настроена так, чтобы иметь восходящий поток в удаленном репозитории

[branch "mybranch"]
    remote = myremote
    merge = refs/heads/mybranch

Можем ли мы установить восходящий поток в третьем удаленном репозитории, чтобы при текущей ветке mybranch, git push <remote> работал без указания refspec для ветвей? Например, будет ли работать следующее?

[branch "mybranch"]
    remote = myremote
    merge = refs/heads/mybranch

[branch "mybranch"]
    remote = yourremote
    merge = refs/heads/mybranch

1 Ответ

0 голосов
/ 13 января 2019

Например, будет ли работать следующий код?

[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

создает репозиторий, который во многом похож на клон с одной ветвью, за исключением того, что мы можем назвать клоном с двумя ветвями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...