Was ist der Unterschied zwischen tun (nach mkdir repo
und cd repo
):
git init
git remote add Origin git://github.com/cmcculloh/repo.git
git fetch --all
git pull Origin master
und
git clone git://github.com/cmcculloh/repo.git
Ich meine, offensichtlich ist einer kürzer, aber ansonsten machen sie im Grunde das Gleiche?
Sie sind im Grunde die gleichen, außer dass Clone zusätzliche Remote-Tracking-Zweige einrichten wird, nicht nur Master. Check out the man page :
Klont ein Repository in ein neu erstelltes Verzeichnis, erstellt Remote-Tracking-Verzweigungen für jede Verzweigung im geklonten Repository (sichtbar mit git branch -r) und erstellt und checkt eine erste Verzweigung aus, die aus der derzeit aktiven Verzweigung des geklonten Repositorys gespalten wird.
Mit git clone
Erhalten Sie eine lokale Kopie eines vorhandenen Repositorys, an dem Sie arbeiten können. Es wird normalerweise nur einmal für ein bestimmtes Repository verwendet, es sei denn, Sie möchten mehrere Arbeitskopien davon haben. (Oder Sie möchten eine saubere Kopie erhalten, nachdem Sie Ihre lokale durcheinander gebracht haben ...)
Mit git pull
(Oder git fetch
+ git merge
) Können Sie Update diese lokale Kopie mit neuen Commits aus dem Remote-Repository erstellen. Wenn Sie mit anderen zusammenarbeiten, wird dieser Befehl häufig ausgeführt.
Wie Ihr erstes Beispiel zeigt, ist es möglich, git clone
Mit einer Reihe anderer git-Befehle zu emulieren, aber es ist nicht wirklich so, dass git pull
"Im Grunde dasselbe" wie git clone
(Oder umgekehrt).
In der Sprache der Laien können wir sagen:
git clone
bedeutet, dass Sie eine Kopie des Repositorys in Ihrem System erstellen.
git fork
bedeutet, dass Sie das Repository in Ihr Github-Konto kopieren.
git pull
bedeutet, dass Sie das zuletzt geänderte Repository abrufen.
git Push
bedeutet, dass Sie das Repository zurückgeben, nachdem Sie es geändert haben.
In der Laienbezeichnung:
git clone
wird heruntergeladen und git pull
erfrischt.
clone: Kopieren des Remote-Server-Repositorys auf Ihren lokalen Computer.
pull: Neue Änderungen erhalten, die andere zu Ihrem lokalen Computer hinzugefügt haben.
Das ist der Unterschied.
Clone wird im Allgemeinen verwendet, um eine Remote-Repo-Kopie zu erhalten.
Pull wird verwendet, um anderen Teammitgliedern hinzugefügten Code anzuzeigen, wenn Sie in Teams arbeiten.
Git-Klon wird verwendet, um genau das herunterzuladen, was gerade auf dem Remote-Server-Repository läuft, und um es in dem Ordner Ihres Computers zu speichern, in dem sich das Projekt befindet. Meist wird es nur verwendet, wenn wir das Projekt zum ersten Mal hochladen. Danach ist Pull die bessere Option.
Git Pull ist im Grunde eine (Klon- (Download-) + Zusammenführungs-) Operation und wird meistens verwendet, wenn Sie als Teamwork arbeiten. Mit anderen Worten, wenn Sie die letzten Änderungen in diesem Projekt möchten, können Sie ziehen.
Hmm, was fehlt, um den Remote-Zweig "4.2" zu sehen, wenn ich ziehe, wie ich es tue, wenn ich klone? Etwas ist eindeutig nicht identisch.
tmp$ mkdir some_repo
tmp$ cd some_repo
some_repo$ git init
Initialized empty Git repository in /tmp/some_repo/.git/
some_repo$ git pull https://github.ourplace.net/babelfish/some_repo.git
:
From https://github.ourplace.net/babelfish/some_repo
* branch HEAD -> FETCH_HEAD
some_repo$ git branch
* master
vs
tmp$ rm -rf some_repo
tmp$ git clone https://github.ourplace.net/babelfish/some_repo.git
Cloning into 'some_repo'...
:
Checking connectivity... done.
tmp$ cd some_repo
some_repo$ git branch
* 4.2
Während der Befehl git fetch
Alle Änderungen auf dem Server abruft, die Sie noch nicht haben, ändert er Ihr Arbeitsverzeichnis überhaupt nicht. Es holt einfach die Daten für Sie und lässt Sie sie selbst zusammenführen. Es gibt jedoch einen Befehl namens git pull
, Der im Wesentlichen ein git fetch
Ist, dem in den meisten Fällen ein git merge
Folgt.
Lesen Sie mehr: https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Pulling
git clone URL ---> Komplettes Projekt oder Repository wird als separates Verzeichnis heruntergeladen. und nicht nur die Änderungen git pull URL ---> fetch + merge -> Es werden nur die vorgenommenen Änderungen und nicht das gesamte Projekt abgerufen