Подтвердить что ты не робот

В чем разница между clone и mkdir-> cd-> init-> remote-add-> pull?

После настройки репо на Github, кажется, существует два способа вытащить это репо в локальное репо.

Во-первых, я мог бы создать каталог, инициализировать пустое репо, добавить пульт и затем вытащить изменения с пульта.

> mkdir "exampleProject"
> cd "exampleProject"
> git init
> git remote add origin [email protected]:exampleUser/exampleProject.git
> git pull origin master

Во-вторых, я мог бы клонировать удаленный компьютер.

> git clone [email protected]:exampleUser/exampleProject.git

Является ли клонирование только ярлыком для 5-ступенчатой ​​версии выше или делает что-то еще? Будет ли я сталкиваться с трудностями, если я использую один метод над другим?

4b9b3361

Ответ 1

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

Тем не менее, ваши шаги близки, но не совсем то же самое, что и git clone. Я могу думать о нескольких отличиях, связанных с ветвями:

  • Если по какой-то причине удаленная HEAD не является ведущей, клон будет поступать правильно - дайте ветке, названной так же, как и remote, а не master. Это редкость, но хорошая деталь, о которой нужно знать.

  • Ваш git pull не будет создавать удаленные ветки. Если пульт имеет несколько ветвей, клон создает удаленные ветки remotes/origin/foo, remotes/origin/bar,... в вашем репозитории. A git fetch origin позаботится об этом в перечисленных вами шагах.

  • Вы также не создали свою основную ветку для отслеживания исходного кода, который делает клон. Вы можете добавить это к указанным выше шагам как git config branch.master.remote origin; git config branch.master.merge refs/heads/master. Это очень важно - с вашими шагами, если у вас есть мастер, и вы набираете git pull, он не знает, что делать.

Возможно, я пропустил кое-что. Что касается трудностей так или иначе, даже если предположить, что вы сглаживаете все различия между клоном по умолчанию и "ручным клоном", мой совет заключается не в том, чтобы изобретать git clone:

  • Короче. Зачем работать больше?

  • У него были удобные варианты для изменения его поведения. Такие вещи, как --shared, было бы очень сложно добавить к вашим перечисленным командам.

  • Это гарантировало правильное решение сейчас и в будущем. Что, если вы пропустили деталь, например, выше? Что делать, если git добавлен глобальный параметр конфигурации, который влияет на клоны? Вам нужно будет изменить свои команды, чтобы принять это во внимание, но git клон уже знал бы.