Ist die Funktion von "forking" spezifisch für github? Oder gibt es einen reinen git-Prozess zum Erstellen von "kopierten" Child-Repositories, die Updates vom Parent abrufen können? Wenn ja, wie?
BEARBEITEN: Ich muss verwirrt sein, was git clone
dann tut. Es war mein Verständnis, dass git clone
ist, was ich auf meinem Rechner mache, um eine lokale Kopie des Repositorys zu erhalten, um Änderungen an commit
und push
vorzunehmen. Wir veranstalten derzeit unsere Repos mit Gitosis . Also, wenn ich eine "Gabel" begleiten wollte, würde ich das Repository auf dem Gitosis-Server selbst (am Ursprung) klonen? Würde das eine neue Git-Adresse erstellen?
Sie wollen das wahrscheinlich nicht tun. Zweige in Git sind sehr schön und leicht, und es gibt wirklich keinen Grund, warum Sie nicht gerade einen Zweig in dem Repository machen sollten, das Sie gerade haben. Der einzige Grund, warum ich mir das mit einem Gitosis-Repository vorstellen kann, ist, um die Zugriffskontrolle interessant zu machen, wenn Sie eine kontinuierliche Deploy oder etwas haben, das aus einem gitosis repository stammt und Commit-Zugriff auf den gleichen Code geben möchte Ich möchte nicht, dass sie in der Lage sind, auf die zu schreiben, die eingesetzt wird. Für alle anderen Verwendungszwecke sollten Sie einfach einen Zweig mit git branch
erstellen und all Ihre Arbeit an der Zweigstelle erledigen. Alternativ können Sie ein GitHub-Repository klonen und dann ein Team daran innerhalb Ihrer zentralen Gitosis-Architektur arbeiten lassen.
Wenn Sie die Vorwarnung angeben, besteht die einfachste Möglichkeit, einen "Fork" auf die beschriebene Weise zu erstellen, darin, ein separates Repository auf dem Gitosis-Server einzurichten. Richten Sie also ein anderes Repository mit dem anderen Namen ein - wenn Ihr ursprüngliches Repository beispielsweise gitosis@server:repo1.git
ist, würden Sie ein anderes unter gitosis@server:repo1-fork.git
einrichten. Fügen Sie die Benutzer hinzu, auf die Sie zugreifen möchten.
Dann würden Sie das Repository klonen: git clone gitosis@server:repo1.git
, das eine vollständige Kopie des Repos in ./repo1
legt. Um es von Ihrer lokalen Version in das gegabelte Repository zu kopieren, können Sie git push gitosis@server:repo-fork.git --mirror
ausführen.
Forking auf Github ist das Äquivalent zu einem einfachen git clone
, obwohl es im Falle des Forks eher ein git clone --mirror
ist.
Jedes Mal, wenn Sie git clone
ein Repository haben, haben Sie effektiv eine Verzweigung erstellt. Das einzige, was die Fork-Funktionalität von GitHub tut, ist, den Klon zu einem GitHub-Repo zu machen, mit einer Webseite und Graphen und Statistiken und all diesen guten Sachen.
Wenn Sie ein Repository klonen, macht Git das ursprüngliche Repository automatisch zum standardmäßigen "Upstream" -Repo (das Remote namens origin
). Also, out of the box, git pull
ohne Argumente sollte direkt aus dem Original ziehen.