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?



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.


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.


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.


... 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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.