Создание удаленной ветви отслеживания для локальной ветви без связи с удаленной - PullRequest
0 голосов
/ 11 мая 2018

У меня есть местное отделение A. Мне нужно создать удаленную ветку отслеживания, скажем, origin/A. Можно ли создать его без связи с удаленным?

1 Ответ

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

Да. В частности, имя ветки удаленного отслеживания подобно origin/A на самом деле является локальной сущностью, а git branch --set-upstream-to или git checkout --track использует эту локальную сущность, не связываясь с ней еще один Git.

Обратите внимание, однако, что имена в пространстве имен refs/remotes/ автоматически создаются или обновляются , а иногда автоматически уничтожаются , git fetch и git push. При извлечении или удалении с remote с именем origin, git fetch и git push будут обновляться соответствующие имена удаленного отслеживания на основе результатов выборки или отправки. Точнее, выполнение git fetch origin будет соответствовать спецификации remote.origin.fetch. По умолчанию refspec является +refs/heads/*:refs/remotes/origin/*. Если Git по URL-адресу, хранящемуся в remote.origin.url, имеет origin/A, это приводит к созданию или обновлению refs/remotes/origin/A в это время.

Если вы используете опцию --prune или устанавливаете любую из опций, которая выбирает обрезку - я настраиваю fetch.prune = true, например, иногда - тогда эта же git fetch origin удалит вашу собственную refs/remotes/origin/A если на Git нет refs/heads/A в origin.

Если вы не заботитесь об этих автоматических операциях, существует только требование, чтобы ваш собственный локальный Git налагал, когда ваш собственный Git отправляется для установки полей из двух частей для ветви A, так что его восходящий поток равен origin/A. Это требование заключается в том, что ваш локальный репозиторий должен иметь ссылку с именем refs/remotes/origin/A. Если у вас его еще нет, введите команду:

git update-ref refs/remotes/origin/A <valid-commit-specifier>

создаст его, не связываясь с Git по URL (и, следовательно, независимо от того, есть ли сейчас на этом Git refs/heads/A). Пока не ясно, что вы хотели бы использовать здесь в качестве действительного спецификатора коммита. Идеальным значением будет то, что разрешает refs/heads/A в Git по URL-адресу, хранящемуся в origin, и чтобы найти это, вам нужно связаться с этим Git. Но любой корректный спецификатор коммитов подойдет, если вы не возражаете против git status, производящего причудливые отсчеты впереди / позади.

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