В чем разница между clone и mkdir->cd->init->remote-add->pull?
После настройки репо на Github, кажется, есть два способа вытащить репо в локальное репо.
Во-первых, я мог бы создать каталог, инициализировать пустое хранилище, добавить пульт, а затем извлечь изменения с пульта.
> mkdir "exampleProject"
> cd "exampleProject"
> git init
> git remote add origin git@github.com:exampleUser/exampleProject.git
> git pull origin master
Во-вторых, я мог бы клонировать пульт.
> git clone git@github.com:exampleUser/exampleProject.git
Является ли клонирование просто ярлыком для 5-ступенчатой версии, описанной выше, или оно делает что-то еще? Буду ли я сталкиваться с трудностями, если я использую один метод над другим?
1 ответ
Многие команды, будь то команды git или обычные программы, выполняют действия в одну строку, которые вы могли бы сделать за десять. Спасать работу всегда хорошо!
Тем не менее, ваши шаги близки, но не совсем так же, как, что git clone
делает. Я могу придумать несколько различий, связанных с ветками:
Если по какой-то причине HEAD пульта дистанционного управления не является ведущим, клон будет действовать правильно - даст вам ветку, названную так же, как и у удаленного, вместо master. Это редкая, но хорошая деталь, о которой нужно знать.
Ваш
git pull
не будет создавать удаленные ветви. Если у пульта есть несколько веток, клон создает удаленные веткиremotes/origin/foo
,remotes/origin/bar
... в вашем хранилище.git fetch origin
позаботится об этом в ваших перечисленных шагах.Вы также не настроили свою основную ветку для отслеживания происхождения, что делает клон. Вы можете добавить это к перечисленным шагам как
git config branch.master.remote origin; git config branch.master.merge refs/heads/master
, Это очень важно - с вашими шагами, если вы проверили master и набрали git pull, он не будет знать, что делать.
Возможно, я пропустил одну или две вещи. Что касается трудностей, так или иначе, даже если предположить, что вы сглаживаете все различия между клоном по умолчанию и "ручным клоном", мой совет - не изобретать заново git clone
:
Это коротко. Зачем больше работать?
У него есть удобные опции, чтобы изменить его поведение. Вещи как
--shared
было бы очень трудно добавить к вашим перечисленным командам.Это гарантированно делать правильные вещи сейчас и в будущем. Что делать, если вы пропустили детали, как те, что выше? Что если git добавил глобальный параметр конфигурации, влияющий на клонов? Вы должны были бы изменить свои команды, чтобы принять это во внимание, но git clone уже знал бы.