Как определить пульт в git, назвав файл в $ GIT_DIR / branch - PullRequest
0 голосов
/ 10 января 2019

С git doc , среди трех способов определения удаленного, третий - this . Я не могу понять, как мне создать этот файл.

Итак, допустим, мое удаленное имя будет stash. Моя ссылка и номер ссылки будут http://someurl.

Теперь, как мне определить пульт, используя этот метод? Может ли кто-нибудь опубликовать файл и его содержимое? Пожалуйста, возьмите немного refspec, чтобы сделать его более понятным.

Связано: Способы настройки удаленного в git

1 Ответ

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

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

git remote add <name> <url>

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

Итак, когда вы говорите, что ваше удаленное имя stash ... это не совсем применимо. Удаленный доступ определяется таким образом, только у kinda-sorta есть «удаленное имя». У него есть URL, и, возможно, имя удаленной ветви и имя локальной ветви; и при извлечении вы можете использовать имя локальной ветви , например , удаленное имя для извлечения удаленной ветви в локальную ветвь.

(Кстати, stash не подходит для удаленного использования в любом случае; stash - это специфическая локальная структура данных в git.)

Таким образом, когда вы определяете доступ таким образом, в качестве имени файла используется имя локальной ветви, а файл содержит URL-адрес (и имя удаленной ветви, если это не просто значение по умолчанию master).

Так, например, предположим, что вы разветвили репо, но вы хотите периодически извлекать обновления из ветки pub исходного репо (потому что они используют какое-то странное соглашение, когда это то, что вам нужно). Вы не заботитесь о других его ветвях (по крайней мере, большую часть времени) и не хотите отображать его как удаленный для общего использования, но вы хотите сокращение для извлечения изменений одной ветки в одну локальную ветвь, где вы размещаете интеграций.

Вы можете создать файл

.git/branches/upstream

содержащий текст

http://url.of.original/repo#pub

Теперь вы можете использовать upstream как удаленное имя;

git fetch upstream

получит изменения из ветви pub по этому URL и обновит ветку upstream соответствующим образом.

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

Оборачиваясь назад, если вы хотите, чтобы к пульту обращались с использованием имени stash (что я заметил, это плохая идея), вам, следовательно, придется также назвать локальную ветвь stash - и это еще хуже потому что в структуре данных stash имеется ссылка под названием stash, а вероятность конфликта и путаницы очень высока.

В каждом случае, о котором я могу подумать, имеет больше смысла конфигурировать удаленное устройство, используя git config, а затем настраивать пользовательские спецификации ссылок для любых "специальных" правил отображения ветвей. Я не уверен, что история этого альтернативного метода определения удаленного доступа - возможно, он старый и раньше считался полезным, или, может быть, он новый, и объяснение того, почему он был добавлен, где-то там, где я не видел. Но в любом случае, просто потому, что вы можете, не обязательно означает, что вы должны. Типичный метод настройки удаленного устройства может соответствовать большинству не всех сценариев, и тогда любой, кто смотрит на него, может понять, как он работает и почему.

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