Ich würde gerne die Unterschiede zwischen einem Fork eines Projekts und einem clone
davon kennenlernen.
Kann ich Pull-Anfragen nur über GitHub senden, wenn ich ein Projekt gegabelt habe?
Ich würde gerne die Unterschiede zwischen einem Fork eines Projekts und einem clone
davon kennenlernen.
Kann ich Pull-Anfragen nur über GitHub senden, wenn ich ein Projekt gegabelt habe?
Antworten:
Grundsätzlich ja. A fork
ist nur eine Aufforderung an GitHub, das Projekt zu klonen und unter Ihrem Benutzernamen zu registrieren . GitHub verfolgt auch die Beziehung zwischen den beiden Repositorys, sodass Sie die Commits und Pulls zwischen den beiden Projekten (und anderen Gabeln) visualisieren können.
Sie können weiterhin verlangen, dass Personen aus Ihrem geklonten Repository fork
abgerufen werden , auch wenn Sie es nicht verwenden. Sie müssen sich jedoch selbst darum kümmern, es öffentlich verfügbar zu machen. Oder senden Sie den Entwicklern Patches (siehe git format-patch
), die sie auf ihre Bäume anwenden können.
git pull
. Eine Gabel nimmt mehrere Befehle auf. Und nicht überraschend, fast jede Gabel, die ich mir ansehe, ist veraltet. Gabeln sind wie das Maven-Repository-Problem bei Steroiden. Anstelle eines veralteten Repos (Maven) gibt es Tausende von ihnen (Git).
git pull
sodass immer noch eine Beziehung besteht. Wenn Sie die gesamte Kopie geklont haben, befindet sie sich auf Ihrem eigenen lokalen Computer und ist vom ursprünglichen Repo getrennt.
Wenn Sie sagen , Sie sind Forking ein Repository Sie im Grunde eine Kopie des Repository unter dem GitHub - ID erstellen. Der wichtigste Punkt, den Sie hier beachten sollten, ist, dass alle Änderungen, die am ursprünglichen Repository vorgenommen wurden, in Ihre gegabelten Repositorys übernommen werden (Sie müssen sie abrufen und neu starten). Wenn Sie jedoch Änderungen an Ihrem gegabelten Repository vornehmen, müssen Sie explizit eine Pull-Anforderung an das ursprüngliche Repository erstellen . Wenn Ihre Pull-Anforderung vom Administrator des ursprünglichen Repositorys genehmigt wurde , werden Ihre Änderungen festgeschrieben / mit der vorhandenen ursprünglichen Codebasis zusammengeführt. Bis dahin werden Ihre Änderungen nur in der von Ihnen gegabelten Kopie wiedergegeben .
Zusamenfassend:
Mit dem Fork & Pull-Modell kann jeder ein vorhandenes Repository verzweigen und Änderungen an seiner persönlichen Verzweigung vornehmen, ohne dass ein Zugriff auf das Quell-Repository erforderlich ist. Die Änderungen müssen dann vom Projektbetreuer in das Quell-Repository gezogen werden.
Beachten Sie, dass Sie nach dem Gabeln Ihr Repository (das unter Ihrem Namen) lokal auf Ihrem Computer klonen können. Nehmen Sie Änderungen daran vor und verschieben Sie sie in Ihr gegabeltes Repository. Um Ihre Änderungen im ursprünglichen Repository widerzuspiegeln, muss Ihre Pull-Anforderung jedoch genehmigt werden.
Einige andere interessante Diskussionen -
Sie können sich auf Ihr Online-Repo festlegen (oder auf Ihr lokales Repo festlegen und dann auf Ihr Online-Repo übertragen) und dann eine Pull-Anfrage senden.
Der Projektmanager kann dies akzeptieren, um Ihre Änderungen in seiner Online-Hauptversion zu erhalten.
Bei einem Klon werden zwei (möglicherweise unterschiedliche) Versionen eines Repositorys ordnungsgemäß dupliziert und zwischen diesen getrennt. Wenn ein Repo geändert wird, muss der neue Inhalt mit einem Push-Befehl aktiv in das andere Repo kopiert werden. Und Änderungen im anderen Repo abgerufen.
Wenn Sie ein Repo auf einem Server teilen, müssen Sie keine Inhalte duplizieren, da beide Repos denselben [festen Objekt] Inhalt von demselben Server verwenden. Der "Trick" besteht darin, die verschiedenen Benutzeransichten so zu verwalten, dass jeder Benutzer glaubt, eine vollständige persönliche Kopie des Repos zu haben. Durch Drücken und Abrufen zwischen Gabeln werden lediglich die Zeiger des Benutzers aktualisiert.
Auf einer niedrigeren Ebene macht git intern dasselbe. Wenn Sie drei verschiedene Dateien haben, die jeweils enthalten Hello World
, "gabelt" git einfach seine einzelne Kopie des Hello World-Blobs und bietet sie nach Bedarf an jeder der drei Stellen an.
Die Möglichkeit, den Server zu verzweigen, bedeutet, dass Githubs große Speicherkapazität im Durchschnitt nicht so groß ist, da jeder Körper das einzige zugrunde liegende Repo teilt.
Kurz gesagt, Forking ist vielleicht dasselbe wie "Klonen unter Ihrer GitHub-ID / Ihrem GitHub-Profil". Eine Gabel ist mit wenigen Ausnahmen natürlich immer besser als ein Klon. Das gegabelte Repository wird im Gegensatz zu einem geklonten Repository immer überwacht / mit dem ursprünglichen Repository verglichen. Auf diese Weise können Sie die Änderungen verfolgen, Pull-Anforderungen initiieren und die im ursprünglichen Repository vorgenommenen Änderungen manuell mit Ihrem gegabelten Repository synchronisieren.
Während @ AniketThakur Antwort ist sehr gut. Die folgende Frage hat noch niemand beantwortet.
Kann ich Pull-Anfragen nur über GitHub senden, wenn ich ein Projekt gegabelt habe?
Nein. Wenn Sie einen Beitrag zu einem Repository leisten, können Sie: einen lokalen Klon erstellen. Machen Sie eine lokale Niederlassung. Fügen Sie diesem Zweig Commits hinzu. Schieben Sie den lokalen Zweig zurück zu Github (erstellen Sie dabei einen Remote-Zweig). Stellen Sie eine Pull-Anforderung, um die Zusammenführung dieses Zweigs mit dem Hauptzweig (oder einem beliebigen Zweig) anzufordern.
Wenn Sie das getan haben, was der Fragesteller angedeutet hat (vergessen, ein Repo zu teilen und nur lokal geklont, Änderungen vorgenommen und jetzt eine Pull-Anfrage stellen müssen), können Sie wieder auf Kurs kommen:
Ein weiterer seltsamer subtiler Unterschied bei GitHub ist, dass Änderungen an Gabeln nicht in Ihrem Aktivitätsprotokoll gezählt werden, bis Ihre Änderungen in das ursprüngliche Repo übernommen wurden. Um eine Gabel in einen richtigen Klon zu verwandeln, müssen Sie sich anscheinend an den Github-Support wenden.
Von Warum werden meine Beiträge nicht angezeigt :
Commit wurde in einer Gabel gemacht
In einer Gabelung eingegangene Verpflichtungen werden nicht auf Ihre Beiträge angerechnet. Damit sie zählen, müssen Sie einen der folgenden Schritte ausführen:
Öffnen Sie eine Pull-Anforderung , damit Ihre Änderungen im übergeordneten Repository zusammengeführt werden. Wenden Sie sich an den GitHub-Support, um die Gabel zu entfernen und sie in ein eigenständiges Repository auf GitHub umzuwandeln . Wenn der Fork über eigene Gabeln verfügt, teilen Sie dem Support mit, ob die Gabeln mit Ihrem Repository in ein neues Netzwerk verschoben werden sollen oder im aktuellen Netzwerk verbleiben sollen. Weitere Informationen finden Sie unter "Informationen zu Gabeln ".