Unterschied zwischen git remote add und git clone

74

Was macht der cloneBefehl? Gibt es ein Äquivalent dazu in svn?

Was ist der Unterschied zwischen

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

Und

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

Ist der Name des erstellten Repos wichtig?

nacho4d
quelle
Das Duplikat, das ich ausgewählt habe, ist eine Art Obermenge Ihrer Frage: Es fragt: "Was ist der Unterschied zwischen git remote add; ...other commands...und git clone.
Cascabel

Antworten:

68

git remote addErstellt einfach einen Eintrag in Ihrer Git-Konfiguration, der einen Namen für eine bestimmte URL angibt. Sie müssen über ein vorhandenes Git-Repo verfügen, um dies verwenden zu können.

git clone Erstellt ein neues Git-Repository, indem ein vorhandenes kopiert wird, das sich an der von Ihnen angegebenen URI befindet.

Jason LeBrun
quelle
Sie meinen, dass in meinem Beispiel beispielsweise der Testordner leer ist und ich '$ git fetch test' aus dem Testordner ausführen muss?
Nacho4d
@ nacho4d: Du müsstest es git initzuerst tun , dann git fetchund git merge(oder git pull) danach, und dann wärst du immer noch ein bisschen daneben ... siehe das Duplikat, das ich verlinkt habe.
Cascabel
53

Diese sind funktional ähnlich (probieren Sie es aus!):

 # Git Klon REMOTEURL foo

und:

 # mkdir foo
 # cd foo
 # git init
 # git remote add origin REMOTEURL
 # Git Pull Origin Master
 # cd ..

Jetzt gibt es kleine Unterschiede, aber im Grunde werden Sie sie wahrscheinlich nicht bemerken. Vergleichen Sie als Übung dem Leser die .git / config aus jedem Verzeichnis.

Wes Hardaker
quelle
2
Ich habe es versucht. Bei Verwendung clonehat die .git / config einen [Zweig "Master"] Teil. Bedeutet dies, dass cloneich bei der Verwendung (in der Zukunft) diesen Zweig zusammenführen remote addkann und nicht?
Nacho4D
2
Nun, zuerst ... sie sind immer noch gleich. Sie können tatsächlich so oder so vom Upstream zusammenführen. Mit der zusätzlichen Anweisung "branch" bedeutet dies, dass Sie den Upstream-Zweig nicht angeben müssen. IE, in einem Klon mit dem obigen "Zweig" können Sie einen "Git Pull" ausführen, wobei Sie wie in dem anderen höchstwahrscheinlich einen "Git Pull Origin Master" ausführen müssen. Jetzt können Sie auch das "git remote add" mit dem Flag -t verwenden, um diese Verzweigungsanweisung hinzuzufügen. Versuchen Sie ein "Git Remote Add" mit und ohne "-t Master" :-)
Wes Hardaker
@ nacho4d: Mit diesem Befehl können Sie denselben Abschnitt [branch "master"] in .git / config abrufen : git branch --set-upstream master origin/master. Dies ist der dritte Befehl, den ich nach dem git remote addund git pullSie aufgelistet haben, und diese drei Befehle scheinen mir eine identische Konfiguration zu geben, wie git clonesie getan hätte.
Bjnord
--set-upstreamscheint veraltet zu sein, das funktioniert besser:git branch --set-upstream-to=origin/master master
Levsa
Ich hasse es, wenn Entwickler Ihnen die einfachen Optionen nehmen. Meiner Meinung nach sollten sowohl Ziehen als auch Drücken das einfachere - Set-Upstream-Flag haben.
Wes Hardaker
11

Der cloneBefehl erstellt eine lokale Kopie des von Ihnen angegebenen Repos. remote addFügt ein Remote-Repo hinzu, zu dem Sie entweder drücken oder ziehen können.

Das svn-Äquivalent von cloneist checkout.

Rafe Kettler
quelle
... Ich denke du meinst remote addfügt ein Remote Repo hinzu, zu dem du entweder ziehen oder von dem du schieben kannst .
Ryan Chase
5

git clone::

Lädt die Dateien physisch auf Ihren Computer herunter. Es wird Platz von Ihrem Computer beanspruchen. Wenn das Repo 200 MB groß ist, wird das gesamte heruntergeladen und in das von Ihnen geklonte Verzeichnis gestellt.

git remote add::

Nimmt keinen Platz! Es ist eher wie ein Zeiger! Es erhöht nicht Ihren Festplattenverbrauch. Es gibt nur eine Momentaufnahme der verfügbaren Filialen und ihrer Git-Commit-Historie, glaube ich. Es enthält nicht die tatsächlichen Dateien / Ordner Ihres Projekts.

Wenn Sie tun:

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

dann haben Sie Ihrem Computer nichts hinzugefügt. Nachdem Sie es in Ihren Remote-Zweigen hinzugefügt haben, können Sie eine Liste aller Zweige auf diesem Remote-Zweig abrufen, indem Sie Folgendes tun:

git fetch --all

Beim Abrufen (oder Abrufen) laden Sie die Dateien herunter. Wenn Sie dann den Feature22-Zweig Ihres Kollegen in Ihren lokalen Zweig übernehmen möchten, tun Sie dies einfach

git checkout -b myLocalFeature22 TechLeadRepo/feature22

Wenn Sie sein Repo geklont hätten, müssten Sie in das Verzeichnis dieses lokalen Repositorys und einfach nur checkoutin die gewünschte Filiale gehen

Honig
quelle