77 votes

Différence entre git remote add et git clone

Qu'est-ce que la clone faire ? Y a-t-il un équivalent dans Svn ?

Quelle est la différence entre

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

Et

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

Le nom du répertoire créé a-t-il une importance ?

1 votes

0 votes

Le doublon que j'ai choisi est en quelque sorte un surensemble de votre question : il s'agit de savoir "quelle est la différence entre git remote add; ...other commands... y git clone .

68voto

Jason LeBrun Points 6130

git remote add crée simplement une entrée dans votre configuration git qui spécifie un nom pour une URL particulière. Vous devez avoir un repo git existant pour l'utiliser.

git clone crée un nouveau dépôt git en copiant un dépôt existant situé à l'URI spécifié.

0 votes

Vous voulez dire que, par exemple, dans mon exemple, le dossier test sera vide et que je devrai faire "$git fetch test" à partir du dossier test ?

0 votes

@nacho4d : Il faudrait que vous fassiez git init d'abord, puis git fetch y git merge (o git pull ) par la suite, et vous seriez toujours un peu à côté de la plaque... voir le duplicata que j'ai mis en lien.

55voto

Wes Hardaker Points 10426

Ils sont fonctionnellement similaires (essayez-le !):

 # git clone REMOTEURL foo

et :

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

Il y a maintenant des différences mineures, mais fondamentalement, vous ne les remarquerez probablement pas. A titre d'exercice laissé au lecteur, comparez les fichiers .git/config de chaque répertoire.

2 votes

J'ai essayé. En utilisant clone Le fichier .git/config contient une partie [branch "master"]. Cela signifie-t-il que lorsque l'on utilise clone (Dans le futur) je peux fusionner cette branche et avec remote add Je ne peux pas ?

2 votes

Eh bien, tout d'abord, ils sont toujours les mêmes. Vous pouvez en fait fusionner à partir de l'amont de l'une ou l'autre manière. L'ajout de la mention "branch" signifie qu'il n'est pas nécessaire de spécifier la branche amont. Par exemple, dans un clone avec la "branche" ci-dessus, vous pouvez faire un "git pull" alors que dans l'autre clone, vous devrez probablement faire un "git pull origin master". Maintenant, vous pouvez également utiliser "git remote add" avec le drapeau -t pour ajouter cette déclaration de branche. Essayez un "git remote add" avec et sans "-t master" :-)

0 votes

@nacho4d : Vous pouvez obtenir cette même section [branch "master"] dans .git/config, avec cette commande : git branch --set-upstream master origin/master . C'est la troisième commande que j'utilise après la commande git remote add y git pull que vous avez listé, et ces 3 commandes semblent me donner une configuration identique à ce que j'ai fait. git clone aurait fait.

11voto

Honey Points 9108

git clone :

Téléchargera physiquement les fichiers sur votre ordinateur. Il prendra de l'espace sur votre ordinateur. Si le repo fait 200Mb, il téléchargera tout cela et le placera dans le répertoire que vous avez cloné.

git remote add :

Ne prend pas de place ! C'est plutôt un pointeur ! Il n'augmente pas votre consommation de disque. Il obtient juste un instantané des branches disponibles et de leur historique de commit git je crois. Il ne contient pas les fichiers/dossiers de votre projet.

Si c'est le cas :

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

alors vous n'avez rien ajouté à votre ordinateur. Une fois que vous l'avez ajouté dans vos branches distantes, vous pouvez obtenir une liste de toutes les branches sur cette branche distante en faisant :

git fetch --all

lors de la récupération (ou de l'extraction), vous téléchargez les fichiers Et ensuite, si vous voulez récupérer la branche feature22 de votre collègue dans votre branche locale, vous n'avez qu'à faire

git checkout -b myLocalFeature22 TechLeadRepo/feature22

Si vous aviez cloné son dépôt, vous devriez alors aller dans le répertoire de ce dépôt local et simplement checkout à la branche souhaitée

11voto

Rafe Kettler Points 29389

En clone crée une copie locale du répertoire que vous avez spécifié. remote add ajoute un repo distant vers lequel vous pouvez pousser ou depuis lequel vous pouvez tirer.

L'équivalent svn de clone es checkout .

1 votes

...Je pense que vous voulez dire remote add ajoute un repo distant que vous pouvez soit tirer vers ou pousser depuis .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X