2011-01-31 3 views
51

Что делает команда clone? Есть ли в svn эквивалент?Разница между git remote add и git clone

В чем разница между

git remote add test git://github.com/user/test.git 

И

git clone git://github.com/user/test.git 

ли имя созданного вещества репо?

+1

Возможный дубликат [В чем разница между клоном и mkdir-> cd-> init-> удаленным добавлением-> вытягиванием?] (Http://stackoverflow.com/questions/4108778/what-is-the- разница между-clone-и-mkdir-cd-init-remote-add-pull) – Cascabel

+0

Дубликат, который я выбрал, является своего рода надмножеством вашего вопроса: он спрашивает: «В чем разница между« git remote add; ... other команды ... 'и' git clone'. – Cascabel

ответ

50

git remote add просто создает запись в вашей конфигурации git, которая указывает имя для определенного URL-адреса. Для этого вам необходимо иметь существующий git repo.

git clone создает новый репозиторий git путем копирования существующего в URI, который вы указываете.

+0

Вы имеете в виду, например, в мой пример, тестовая папка будет пустой, и мне нужно будет выполнить «$ git fetch test» из тестовой папки? – nacho4d

+0

@ nacho4d: сначала вам нужно выполнить 'git init', затем' git fetch' и 'git merge' (или «git pull»), а затем вы все равно немного отбросьте ... см. дубликат, который я связал. – Cascabel

6

Команда clone создает локальную копию указанного вами репо. remote add добавляет удаленное репо, которое вы можете либо нажать, либо извлечь.

Svn-эквивалент clone: checkout.

+0

... Я думаю, вы имеете в виду, что 'remote add' добавляет удаленное репо, которое вы можете либо вытащить, либо нажать с **. –

39

Эти функционально подобны (попробуйте!):

 
# git clone REMOTEURL foo 

и:

 
# mkdir foo 
# cd foo 
# git init 
# git remote add origin REMOTEURL 
# git pull origin master 

В настоящее время существуют небольшие различия, но в основном вы, вероятно, не будет замечать их. Как упражнение, оставленное читателю, сравните .git/config из каждого каталога.

+2

Я пробовал. С использованием 'clone', .git/config имеет [branch" master "] часть. Означает ли это, что при использовании 'clone' (В будущем) я могу объединить эту ветку и с' remote add' я не могу? – nacho4d

+2

Ну, сначала ... они все те же. Вы можете фактически слиться с восходящим потоком в любом случае. С дополнительным выражением «branch» в нем это означает, что вам не нужно указывать ветвь вверх по течению. IE, в клоне с вышеупомянутой «ветвью» в нем вы можете сделать «git pull», где, как и в другом, вам, скорее всего, понадобится «мастер создания git pull origin». Теперь вы можете использовать «git remote add» с флагом -t, чтобы добавить этот оператор ветвления. Попробуйте «git remote add» с и без «-t master» :-) –

+0

@ nacho4d: вы можете получить тот же раздел [master «master»] в .git/config с помощью этой команды: 'git branch --set -производственный хозяин/мастер'. Это третья команда, которую я использую после «git remote add» и «git pull», которые вы указали, и эти 3 команды, похоже, дают мне идентичную конфигурацию того, что сделал бы «git clone». – bjnord

Смежные вопросы