2011-01-31 222 views
51

¿Qué hace el comando clone? ¿Hay algún equivalente en svn?Diferencia entre git remote add y git clone

¿Cuál es la diferencia entre

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

Y

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

¿El nombre de la materia repo creado?

+1

posible duplicado de [¿Cuál es la diferencia entre clone y mkdir-> cd-> init-> remote-add-> pull?] (Http://stackoverflow.com/questions/4108778/what-is-the- difference-between-clone-and-mkdir-cd-init-remote-add-pull) – Cascabel

+0

El duplicado que elegí es una especie de superconjunto de su pregunta: pregunta "¿cuál es la diferencia entre' git remote add; ... other comandos ... 'y' git clone'. – Cascabel

Respuesta

50

git remote add acaba de crear una entrada en su configuración de git que especifica un nombre para una URL en particular. Debe tener un repositorio git existente para usar esto.

git clone crea un nuevo repositorio de git copiando uno existente ubicado en el URI que especifique.

+0

Quiere decir que, por ejemplo, en mi ejemplo, la carpeta de prueba estará vacía y tendré que hacer '$ git fetch test' desde la carpeta de prueba? – nacho4d

+0

@ nacho4d: Tendría que hacer 'git init' primero, luego' git fetch' y 'git merge' (o 'git pull') después, y aún estarías un poco apagado ... mira el duplicado que conecté. – Cascabel

6

El comando clone crea una copia local del repositorio que especificó. remote add agrega un repositorio remoto desde el que puede empujar o extraer.

El equivalente de svn de clone es checkout.

+0

... Creo que quiere decir 'remote add' agrega un repositorio remoto que puede ** acercar o presionar **. –

39

Estos son funcionalmente similares (probarlo!):

 
# git clone REMOTEURL foo 

y:

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

Ahora bien, hay diferencias de menor importancia, pero fundamentalmente es probable que no se dará cuenta de ellos. Como ejercicio dejado al lector, compare los archivos .git/config de cada directorio.

+2

Lo he intentado. Con el uso de 'clone', el .git/config tiene una parte [branch" master "]. ¿Esto significa que al usar 'clone' (en el futuro) puedo fusionar esa rama y con' remote add' no puedo? – nacho4d

+2

Bueno, primero ... todavía son lo mismo. En realidad, puede fusionarse desde el flujo ascendente en ambos sentidos. Con la declaración adicional "rama" allí significa que no necesita especificar la rama ascendente. Es decir, en un clon con la "rama" anterior, puede hacer un "git pull" donde, como en el otro, lo más probable es que necesite hacer un "maestro de origen de git pull". Ahora, puede usar el "complemento remoto git" con el indicador -t también para agregar esta instrucción de bifurcación. Pruebe con un "git remote add" con y sin "-t master" :-) –

+0

@ nacho4d: Puede obtener la misma sección [branch "master"] en .git/config, con este comando: 'git branch --set -upstream master origin/master'. Ese es el tercer comando que uso después de 'git remote add' y' git pull' que ha enumerado, y esos 3 comandos parecen darme una configuración idéntica a lo que 'git clone' habría hecho. – bjnord