В чем разница между pull и clone в git? - PullRequest
200 голосов
/ 01 сентября 2010

В чем разница между выполнением (после mkdir repo и cd repo):

git init
git remote add origin git://github.com/cmcculloh/repo.git
git fetch --all
git pull origin master

и

git clone git://github.com/cmcculloh/repo.git

Я имею в виду, очевидно, что один короче, но кроме этого они в основном делают то же самое?

Ответы [ 9 ]

216 голосов
/ 02 сентября 2010

git clone - это способ получения локальной копии существующего хранилища для работы. Обычно он используется только один раз для данного репозитория, если только вы не хотите иметь несколько его рабочих копий. (Или хотите получить чистую копию после того, как испортили свою локальную ...)

git pull (или git fetch + git merge) - это способ обновить эту локальную копию новыми коммитами из удаленного репозитория. Если вы сотрудничаете с другими, это команда, которую вы будете часто выполнять.

Как показывает ваш первый пример, можно эмулировать git clone с помощью набора других команд git, но на самом деле git pull делает "в основном то же самое", что и git clone (или наоборот -versa).

105 голосов
/ 01 сентября 2010

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

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

102 голосов
/ 17 июля 2013

На языке неспециалистов мы можем сказать:

  • Клон : Получить рабочую копию удаленного хранилища.
  • Извлечь :Я работаю над этим, пожалуйста, дайте мне новые изменения, которые могут быть обновлены другими.
25 голосов
/ 29 декабря 2017

git clone означает, что вы делаете копию хранилища в вашей системе.

git fork означает, что вы копируете хранилище в свою учетную запись Github.

git pull означает, что выизвлекают последнее измененное хранилище.

git push означает, что вы возвращаете хранилище после его изменения.

В терминах непрофессионала:

git clone загружается и git pull освежает.

8 голосов
/ 19 февраля 2018

клон : копирование репозитория удаленного сервера на локальный компьютер.

pull : получить новые изменения, добавленные на ваш локальный компьютер.

В этом разница.

Клон обычно используется для получения удаленной копии репо.

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

3 голосов
/ 09 января 2019

git clone используется для того, чтобы просто загрузить именно то, что в данный момент работает в репозитории удаленного сервера, и сохранить его в папке вашего компьютера, где находится этот проект.В основном это используется только тогда, когда мы собираемся загрузить проект в первый раз.После этого pull является лучшим вариантом.

git pull в основном представляет собой операцию (клонирование (загрузка) + слияние) и в основном используется, когда вы работаете в команде.Другими словами, если вам нужны последние изменения в этом проекте, вы можете вытащить.

2 голосов
/ 14 августа 2015

Хм, чего не хватает, чтобы увидеть удаленную ветку "4.2" при вытягивании, как при клонировании?Что-то явно не идентично.

tmp$  mkdir some_repo

tmp$  cd some_repo

some_repo$  git init
Initialized empty Git repository in /tmp/some_repo/.git/

some_repo$  git pull https://github.ourplace.net/babelfish/some_repo.git
  :
From https://github.ourplace.net/babelfish/some_repo
 * branch            HEAD       -> FETCH_HEAD

some_repo$  git branch
* master

против

tmp$  rm -rf some_repo

tmp$  git clone https://github.ourplace.net/babelfish/some_repo.git
Cloning into 'some_repo'...
  :
Checking connectivity... done.

tmp$  cd some_repo

some_repo$  git branch
* 4.2
1 голос
/ 01 октября 2016

Хотя команда git fetch извлечет все изменения на сервере, которых у вас еще нет, она не изменит ваш рабочий каталог вообще.Он просто получит данные для вас и позволит вам объединить их самостоятельно.Тем не менее, есть команда с именем git pull, которая по сути является git fetch, за которой сразу следует git merge в большинстве случаев.ан / v2 / Гит-ветвящегося Дистанционно Ветви # Натяжение

0 голосов
/ 14 мая 2019

URL-адрес git clone ---> Весь проект или репозиторий будут загружены в виде отдельного каталога.а не только изменения git pull URL ---> fetch + merge -> он будет получать только те изменения, которые были сделаны, а не весь проект

...