В чем разница между `remote. <name>.push` и` push.default`? - PullRequest
0 голосов
/ 10 января 2019

В чем разница между remote.<name>.push и push.default?

Указывают ли они оба refspec аргумент по умолчанию git push?

Если да, каков порядок приоритета между ними?

Применяется ли remote.<name>.push к конкретному удаленному репозиторию <name>, а push.default ко всем удаленным репозиториям?

1 Ответ

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

Как вы и подозревали, remote.<em>name</em>.push относится только к указанному пульту name. Если присутствует, он предоставляет refspec по умолчанию. Например, делать:

git config remote.zorg.push refs/heads/master:refs/heads/master

означает, что git push zorg эквивалентно git push zorg refs/heads/master:refs/heads/master.

Однако push.default не не предоставляет ссылку по умолчанию, по крайней мере, напрямую. Может быть установлено одно из пяти значений:

  • nothing: ошибка, не содержащая refspecs, является ошибкой
  • current: push без указания refspecs означает «выдвинуть текущую ветвь в одноименную ветвь»
  • upstream или tracking: push без refspecs означает «протолкнуть текущую ветвь к ее восходящему потоку»
  • simple: аналогично upstream, но настройка восходящего потока должна совпадать с именем ветви
  • matching: это самое сложное; см. ниже.

Обратите внимание, что tracking устарело (вместо этого используйте upstream). Ограничение для simple заключается в том, что если ваша локальная ветвь имеет имя xyz, восходящая ветвь также должна иметь имя xyz на удаленном компьютере.

Настройка matching означает, что:

  • Получить список всех названий ветвей с пульта (см. git ls-remote output, ищите refs/heads/).
  • Для каждого такого имени ветви, если у вас также есть ветвь с тем же именем, добавьте это в список. Если нет, игнорируйте это.
  • Используйте все полученные пары имен в качестве refspecs.

Этот режим был по умолчанию в версиях Git до Git 2.0, но он был довольно подвержен ошибкам, так что теперь это не так.

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