Почему на странице руководства git-pull написано: «Вы никогда не разрабатываете свои собственные ветки, которые появляются в правой части двоеточия <refspec>на Pull: lines»? - PullRequest
2 голосов
/ 26 ноября 2011

На странице руководства для git pull ниже «Опции, связанные с извлечением» сказано:

Вы никогда не будете самостоятельно разрабатывать ветки, которые появляются на правой стороне двоеточия на Pull: lines;они должны быть обновлены git fetch.Если вы намереваетесь заняться разработкой, полученной из удаленной ветви B, используйте линию Pull: для ее отслеживания (т. Е. Pull: B: remote-B) и отдельную ветку my-B для своей разработки.Последний создается с помощью git branch my-B remote-B (или его эквивалентной git checkout -b my-B remote-B).Запустите git fetch, чтобы отслеживать прогресс на удаленной стороне, и когда вы увидите что-то новое в удаленной ветке, объедините его с вашей веткой разработки с помощью git pull.remote-B, пока вы находитесь на ветке my-B.

Мы пробовали рабочий процесс:

git fetch origin
git checkout -b un-3437 origin/un-3437

Я считаю, что un-3437 в примереэто B в комментарии на странице руководства.Поэтому мы должны затем перейти от un-3437.Тем не менее, это, кажется, много дополнительной работы.

Во-вторых, игнорируя вторую идею ветвления в параграфе выше, мы обнаруживаем, что git status скажет, что локальная ветвь опережает удаленную по x коммитам.Мы не понимаем, как это было бы, если бы мы только что сделали git pull.

Наша ментальная модель, похоже, неверна.Есть ли хороший ресурс, чтобы объяснить все эти указатели?

Ответы [ 3 ]

2 голосов
/ 26 ноября 2011

На странице руководства написано, что вы никогда не выполняете разработку для ветви, которая появляется в справа двоеточия в конфигурации "Pull:". Это не говорит о том, что вы не должны заниматься разработкой в ​​ветке, названной так же, как в левой части двоеточия.

Неважно, что находится слева от двоеточия, потому что эти ссылки находятся на удаленном сервере. Имя, отображаемое справа, имеет значение, так как оно ссылается на ветку в вашем локальном репозитории, которая будет автоматически обновляться (не объединяться!) При извлечении или извлечении, и вы не хотите, чтобы эта ссылочная ветвь изменялась локально, иначе есть вероятность будет либо потерян (если вы принудительно обновите), либо вы не сможете получить локальную копию удаленных изменений (если вы не принудительно обновите).

1 голос
/ 26 ноября 2011

Визуальный справочник git - хорошее начало:

См. git pull, где вы объединяете git fetch и git merge:

enter image description here


Обновление август 2014 (2+ года спустя)

Commit 3630654 (май 2014, Git 2.1 by Junio ​​C Hamano (gitster) ) удаляет это предупреждение из документа:

В старые времена, предшествовавшие Git 1.5, для "git fetch" обычно использовалось одно и то же пространство имен локальных веток для отслеживания веток удаленного отслеживания, и необходимо было указывать пользователям не проверять их и не фиксировать на них.

Поскольку в наши дни все используют отдельную удаленную схему, нет необходимости предупреждать против практики, чтобы проверить правую часть <refspec> и опираться на нее - RHS (правая сторона) обычно даже не местный филиал.

0 голосов
/ 27 ноября 2011

Ваш рабочий процесс правильный.

Загляните в каталог .git в корне вашего проекта, изучите файл config, и вы увидите что-то вроде

[remote "origin"]
    url = git@bitbucket.org:something/projectname.git
    fetch = +refs/heads/*:refs/remotes/origin/*

к этим строкам обращаются, когда вы набираете git fetch origin.

. Вы можете видеть, что на самом деле правая часть извлечения / извлечения - это нечто, содержащее remotes/origin.Они говорят, что не редактируют ветку удаленного отслеживания.

Набрав

git checkout -b un-3437 origin/un-3437

, вы создаете локальную ветку, которая отслеживает «локально сохраненное удаленное отслеживание».ветка".Когда git status говорит, что вы X или K, вы впереди или сзади, сравнивает un-3437 с remotes/origin/un-3437.

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