Когда ветвь. <branchName>.remote и ветвь. <branchName>.merge значения, добавленные Git? - PullRequest
0 голосов
/ 08 мая 2018

Я хочу знать, когда в конфигурационном файле branch.<branchName>.remote и branch.<branchName>.merge заполняются GIT в первый раз? (Игнорировать редактирование пользовательских конфигурационных файлов или прямые команды для добавления удаленных и т. Д.)

Кроме того, можно просто с помощью команд push и pull изменить вышеуказанное?

ПРИМЕЧАНИЕ : Меня не интересует, как мы можем изменить эти значения. Просто в конкретном случае выше.

1 Ответ

0 голосов
/ 08 мая 2018

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

  • git checkout

    • Если git checkout задается опция --track при создании или для создания новое имя ветви, git checkout установит оба.
    • Если git checkout использует режим DWIM для создания ветви, git checkout установит оба параметра при создании этой ветви.

      DWIM здесь означает Делать то, что я имею в виду: в этом случае вы указываете git checkout проверить имя ветви, которая не существует, например, git checkout develop, когда вы не имеют a develop. Вместо простого сбоя git checkout сканирует все имена удаленного отслеживания, такие как origin/master, origin/develop, fred/master, fred/feature и т. Д. Если git checkout сможет найти ровно одно из этих имен для удаленного отслеживания, которое в достаточной степени соответствует используемому вами имени ветви, Git создаст ветку, как если бы вы сказали git checkout --track origin/develop.

      Обратите внимание, что если вы получаете два совпадения (например, существуют и origin/develop, и fred/develop), этот режим DWIM завершается сбоем, и вы должны сказать git checkout --track origin/develop, если это тот, который вы имели в виду.

    • Все остальные случаи git checkout не устанавливают и не сбрасывают элементы конфигурации. (Следовательно, если ваш вопрос был «когда они установлены для вновь созданной ветви», ответ на git checkout находится в вышеупомянутых случаях.)

  • git branch

    • Как и в случае git checkout, вы можете предоставить ему опцию --track при создании новой ветви. Здесь нет режима DWIM. Если вы используете --track, две настройки конфигурации устанавливаются на основе аргумента .

    • Вы также можете запустить git branch --set-upstream-to, чтобы установить или изменить текущую настройку восходящего потока для некоторой существующей ветви. Если они были не установлены ранее, это изменяет их для установки (на любое значение); но будет ли это первое время, в которое они были установлены, зависит от того, устанавливали ли вы их еще раньше и сбросили ли они.

    • git branch имеет устаревшую опцию --set-upstream, что означает то же самое, что и --set-upstream-to, но порядок аргументов «обратный», что приводит к множеству ошибок пользователя (именно поэтому это не рекомендуется) .

    • Вы можете git branch --unset-upstream до сбросить оба значения.

  • git push:

    • Большинство вызовов git push не касаются настройки восходящего направления. Некоторые будут использовать это. Однако, если вы добавите флаг -u или --set-upstream к вашей команде git push и , то отправка завершится успешно, git push немедленно установит оба элемента конфигурации на основе удаленной цели назначения и ссылки.
  • И, конечно, git config и / или ручное редактирование могут изменить любой из них, хотя вы сказали, что вас это не волнует.

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