Ich würde gerne mehr über die Vor- und Nachteile eines github-Projekts erfahren, anstatt einen Zweig eines github-Projekts zu erstellen.
Mit Forking wird meine Version des Projekts vom ursprünglichen isoliert, da ich nicht auf der Liste der Mitbearbeiter des ursprünglichen Projekts stehen muss. Da wir ein Projekt inhouse entwickeln, ist es kein Problem, Mitarbeiter als Mitarbeiter hinzuzufügen. Wir möchten jedoch gerne verstehen, ob durch das Aufteilen eines Projekts Änderungen der Zusammenführung zum Hauptprojekt schwieriger werden. Das heißt, ich frage mich, ob das Verzweigen die Synchronisierung der beiden Projekte erleichtert. Ist es also einfacher, Änderungen zwischen meiner Version des Hauptprojekts und dem Hauptprojekt zusammenzuführen und zu verschieben, wenn ich verzweige?
Sie können nicht immer eine Verzweigung erstellen oder eine vorhandene Verzweigung ziehen und darauf zurückgreifen, da Sie nicht als Mitarbeiter für ein bestimmtes Projekt registriert sind.
Gabelung ist nichts weiter als ein Klon auf der GitHub-Serverseite:
Sie halten eine Gabelung synchron mit dem ursprünglichen Projekt, indem Sie:
Mit der Rebase können Sie sicherstellen, dass Ihre Änderungen unkompliziert sind (kein Zusammenführungskonflikt). Dadurch wird Ihre Pulling-Anforderung einfacher, wenn der Betreuer des ursprünglichen Projekts Ihre Patches in sein Projekt aufnehmen soll.
Das Ziel ist wirklich, Zusammenarbeit zu ermöglichen, obwohl direkte Teilnahme nicht immer möglich ist.
Die Tatsache, dass Sie auf der GitHub-Seite klonen, bedeutet, dass Sie jetzt zwei "zentrales" Repository haben ("zentral" als "von mehreren Mitarbeitern sichtbar").
Wenn Sie sie direkt als Mitbearbeiter für one project hinzufügen können, müssen Sie keinen weiteren mit einer Verzweigung verwalten.
Das Zusammenführungserlebnis wäre ungefähr gleich, aber mit einem zusätzlichen Grad an Indirektion (Drücken Sie zuerst auf die Gabel, dann fragen Sie nach einem Zug, mit der Gefahr einer Entwicklung des Original-Repos, wodurch Ihre Schnellvorlauf-Merges nicht mehr schnell vorwärts gehen). .
Das heißt, der korrekte Arbeitsablauf besteht darin, git pull --rebase upstream
(Ihre Arbeit zusätzlich zu neuen Commits aus dem Upstream-Bereich abzugrenzen) und dann git Push --force Origin
, um die Historie so umzuschreiben, dass Ihre eigenen Commits immer auf den Commits des Commits stehen ursprüngliches (Upstream) Repo.
Siehe auch:
Hier sind die Hauptunterschiede:
Es hat mit dem allgemeinen Arbeitsablauf von Git zu tun. Es ist unwahrscheinlich, dass Sie direkt zum Repository des Hauptprojekts pushen können. Ich bin mir nicht sicher, ob das Repository des GitHub-Projekts die verzweigungsbasierte Zugriffssteuerung unterstützt, da Sie beispielsweise niemandem die Berechtigung zum Push an den Master-Zweig erteilen möchten.
Das allgemeine Muster sieht wie folgt aus:
Ohne dies ist es für öffentliche Projekte ziemlich ungewöhnlich, dass jemand seine eigenen Verpflichtungen direkt pushen lässt.
Forking erstellt ein komplett neues Repository aus dem vorhandenen Repository (einfach git clone für gitHub/bitbucket)
Gabeln werden am besten verwendet: Wenn das Ziel der Aufteilung besteht, ein logisch unabhängiges Projekt zu erstellen, das möglicherweise niemals mit seinem übergeordneten Element zusammengeführt wird.
Branch-Strategie erstellt einen neuen Branch über das vorhandene/funktionierende Repository
Verzweigungen werden am besten verwendet: Wenn sie als temporäre Orte erstellt werden, um ein Feature zu bearbeiten, mit der Absicht, die Verzweigung mit dem Ursprung zu verbinden.
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 forks gelöst: Jedes Mal, wenn ein Entwickler etwas an einem Open Source-Projekt ändern möchte, wird das offizielle Repository nicht direkt geklont. Stattdessen verzweigen sie ihn, 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.
Die Gabelung ähnelt im Wesentlichen der Verzweigung von Features. Anstatt jedoch Verzweigungen zu erstellen, wird eine Verzweigung des Repositorys vorgenommen. Statt einer Zusammenführungsanforderung erstellen Sie eine Pull-Anforderung.
Die folgenden Links geben den Unterschied auf eine gut erläuterte Weise an:
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/