Forking erstellt ein völlig neues Repository aus dem vorhandenen Repository (einfach git clone auf gitHub / bitbucket)
Gabeln werden am besten verwendet: Wenn die Absicht des "Split" darin besteht, ein logisch unabhängiges Projekt zu erstellen, das möglicherweise nie wieder mit seinem übergeordneten Projekt zusammengeführt wird.
Die Zweigstellenstrategie erstellt einen neuen Zweig über dem vorhandenen / funktionierenden Repository
Zweige werden am besten verwendet: Wenn sie als temporäre Orte zum Durcharbeiten eines Features erstellt werden, mit der Absicht, den Zweig mit dem Ursprung zusammenzuführen.
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