Sie können nicht immer eine Verzweigung erstellen oder eine vorhandene Verzweigung abrufen und zu dieser zurückschieben, da Sie nicht als Mitarbeiter für dieses bestimmte Projekt registriert sind.
Forking ist nichts anderes als ein Klon auf der GitHub-Serverseite :
- ohne die Möglichkeit, direkt zurückzudrücken
- mit Gabelwarteschlangenfunktion hinzugefügt, um die Zusammenführungsanforderung zu verwalten
Sie halten eine Gabelung mit dem Originalprojekt synchron, indem Sie:
- Hinzufügen des ursprünglichen Projekts als Fernbedienung
- regelmäßig von diesem ursprünglichen Projekt abrufen
- Stellen Sie Ihre aktuelle Entwicklung auf den Zweig des Interesses zurück, den Sie von diesem Abruf aktualisiert haben.
Mit der Rebase können Sie sicherstellen, dass Ihre Änderungen unkompliziert sind (kein Zusammenführungskonflikt zu behandeln), was Ihre Pulling-Anforderung einfacher macht, wenn der Betreuer des ursprünglichen Projekts Ihre Patches in sein Projekt aufnehmen soll.
Das Ziel ist wirklich, die Zusammenarbeit zu ermöglichen, obwohl eine direkte Teilnahme nicht immer möglich ist.
Die Tatsache, dass Sie auf der GitHub-Seite klonen, bedeutet, dass Sie jetzt zwei "zentrale" Repositorys haben ("zentral" als "von mehreren Mitarbeitern sichtbar").
Wenn Sie sie direkt als Mitarbeiter für ein Projekt hinzufügen können , müssen Sie kein anderes verwalten einer mit einer Gabel.
Das Zusammenführungserlebnis wäre ungefähr das gleiche, jedoch mit einer zusätzlichen Indirektionsebene (zuerst auf die Gabel drücken und dann nach einem Zug fragen, wobei das Risiko von Entwicklungen im ursprünglichen Repo besteht, sodass Ihre Schnellvorlauf-Zusammenführungen nicht mehr schnell vorspulen). .
Das bedeutet, dass der richtige Workflow darin besteht, git pull --rebase upstream
(Ihre Arbeit auf neue Commits von Upstream neu zu gründen) und danngit push --force origin
, um den Verlauf so umzuschreiben, Ihre eigenen Commits immer über den Commits aus dem ursprünglichen (Upstream-) Repo zu stehen .
Siehe auch:
Hier sind die allgemeinen Unterschiede:
Gabeln
Vorteile
Nachteile
Verzweigung
Vorteile
Nachteile
quelle
write
Berechtigungen für das Repository hat.Es hat mit dem allgemeinen Workflow von Git zu tun. Es ist unwahrscheinlich, dass Sie direkt in das Repository des Hauptprojekts wechseln können. Ich bin mir nicht sicher, ob das Repository des GitHub-Projekts eine verzweigungsbasierte Zugriffssteuerung unterstützt, da Sie beispielsweise niemandem die Berechtigung erteilen möchten, auf den Hauptzweig zu pushen.
Das allgemeine Muster ist wie folgt:
Ohne dies ist es für öffentliche Projekte ziemlich ungewöhnlich, dass jemand seine eigenen Verpflichtungen direkt durchsetzen kann.
quelle
Forking erstellt ein völlig neues Repository aus dem vorhandenen Repository (einfach git clone auf gitHub / bitbucket)
Die Zweigstellenstrategie erstellt einen neuen Zweig über dem vorhandenen / funktionierenden Repository
Spezifischer: - In Open Source-Projekten entscheidet der Eigentümer des Repositorys, wer in das Repository pushen kann. Die Idee von Open Source ist jedoch, dass jeder zum Projekt beitragen kann.
Dieses Problem wird durch Gabeln gelöst: Jedes Mal, wenn ein Entwickler etwas in einem Open Source-Projekt ändern möchte, klont er das offizielle Repository nicht direkt. Stattdessen gabeln sie es, um eine Kopie zu erstellen. Wenn die Arbeit abgeschlossen ist, stellen sie eine Pull-Anforderung, damit der Eigentümer des Repositorys die Änderungen überprüfen und entscheiden kann, ob sie mit seinem Projekt zusammengeführt werden sollen.
Im Kern ähnelt das Forking dem Verzweigen von Features, aber anstatt Zweige zu erstellen, wird ein Fork des Repositorys erstellt, und anstatt eine Zusammenführungsanforderung auszuführen, erstellen Sie eine Pull-Anforderung.
Die folgenden Links geben den Unterschied auf gut erläuterte Weise wieder:
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/
https://buddy.works/blog/5-types-of-git-workflows
http://www.continuousagile.com/unblock/branching.html
quelle