Best practices auf GitHub repos, um eine Gabel oder einen Neuen Branch erzeugen
Ich bin auf der Suche nach der besten Praxis, die Verzweigung vs Verzweigung auf GitHub. Ich habe gelesen das Forking vs. Verzweigung in GitHub, aber es ist nicht relevant.
Unser team von 5 Personen arbeiten auf dem gleichen repository, und wir möchten vermeiden, merging, Probleme, Konflikte oder regression im code. Ziel ist es für die 5 Personen arbeiten an unterschiedlichen teilen des Projektes, oft auf die gleiche Datei.
Ich würde gerne wissen, ob es sich lohnt es zu :
- Gabel das Projekt, die Arbeit und erstellen pull-Anforderungen, so dass jede Person kann überprüfen Sie den code, leicht, oder
- erstellen Sie einen neuen branch - und merge auf den master, wenn die Arbeit getan ist.
- Die beiden Optionen, die Sie vorgeschlagen, sind identisch von git-Perspektive, und fast identisch von GitHub Perspektive (die Sie erstellen können pull-requests von Zweigen im gleichen repository).
- Danke für dein edit @random. Da bin ich auf der Suche nach den "best practices", ich hätte gerne mehr Kommentare, wie es von verschiedenen Firmen, und die pro - /Nachteile der einzelnen Optionen.
- Ich bin nicht auf der Suche aus dem git-Perspektive, sondern aus der Perspektive eines Entwicklers.
- Aus der Perspektive des Entwicklers, eine Gabel ist nur ein weiteres git remote können Sie push-to -. Wirklich, ich sehe keinen großen Unterschied, so oder so.
- Hier ist eine ganze Liste von möglichen git-workflows, die Sie verwenden können: atlassian.com/git/workflows
- Danke @Ajedi32, dass s einige links, wie ich bin auf der Suche nach.
- In einem team von 5 die Zusammenarbeit auf ein gemeinsames Ziel hin ich sehe keinen Vorteil in der Gabelung. Die Verzweigung ist leichter und meiner Meinung nach genauer entspricht der Ende Ziel, dass alle 5 Beitrag zu dem gleichen Ergebnis. Obwohl funktional, nicht besonders anders, die Verzweigung setzt fast Voraus, dass Sie alle gehen zu ziehen, die code-Basis in weitgehend verschiedenen Richtungen, mehr lose sharing code. Vorausgesetzt, Sie sind in der gleichen organisation, die ein gemeinsames Ziel haben und einander Vertrauen - Verzweigung ist der Weg zu gehen für Sie, denke ich.
- Mögliche Duplikate von Forking vs. Verzweigung in GitHub
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mir, die beste Vorgehensweise, wenn es mit einem Projekt mit mehr als einem Entwickler ist es, mit gitflow Verzweigung Modell.
Erste, der master-branch wird nun nur benutzt, um zu verfolgen, welche Versionen der app, Dur -, Moll-oder patch-Versionen, nach der Semantische Versionning.
Dem Zweig entwickeln, werden Sie den Kern Ihres Projektes, da Sie die Brücke zwischen den verschiedenen Funktionen und Ihre Veröffentlichungen.
Dieses system trägt zur Verringerung der Anzahl der merge -, nur als ein einfaches branching-system verwenden, aber fügen Sie die semantische Logik, und die freundliche und einfache Befehle, die mit ihm kommt.
Weitere Infos über gitflow, die Sie Folgen können dieser link.
Aufrechterhaltung Gabeln führt zu zusätzlichem Aufwand, wie jede Gabel braucht, ziehen änderungen von upstream. Ich sehe keinen Vorteil dabei, wenn alle Entwickler haben Zugriff auf ein gemeinsames repository.
Pull-requests kann ein sehr nützlicher Mechanismus für code-reviews, aber Sie nicht verlangen, dass Sie verwenden, Gabeln. Sie können erstellen von Zweigen im gleichen repository und verwenden Sie pull-requests zu verwalten, fasst Sie in Ihrem master-Zweig.
In meinem Büro haben wir eine ähnliche situation: ein großes Projekt, bei dem fünf oder mehr Entwickler haben Zugriff auf das Projektarchiv, und in der Regel mindestens drei arbeiten, jederzeit. Wir verwalten alles mit einem einzigen repository mit branches und pull-requests, und wir hatten keine Probleme (die durch unsere source-control-setup jedenfalls).
Pull-requests sind ein ausgezeichneter Weg, um zu erbitten, um code-reviews von anderen Entwicklern, die ist besonders wichtig, wenn die gleichen Entwickler arbeiten mit dem code am nächsten Tag. Gabelung, auf der anderen Seite, nicht wirklich einen Vorteil; es ist eine Lösung für das problem ermöglichen einen breiteren Zugang zu einer kontrollierten ab, und dieses problem einfach nicht existieren, wenn alle commit-Zugriff auf das repo.
Atlassian hat eine ausgezeichnete schreiben auf die Unterschiede zwischen Gabelung und anderen git-workflows auf Ihren git-tutorials Seite. (Siehe Forking-Workflow | Atlassian Git Tutorial)
Relevanten Zitate:
Ich würde die Arbeit in einem "zentralen" Weg, das heißt, mit einem Haupt-repo, dass jeder Gabelung, jeder Entwickler würde sich verpflichten, Ihre eigenen repo, das macht den code-review-Prozess zu erleichtern. Sobald der code-überprüfung erledigt ist, kannst du die änderungen zusammengeführt, um das Haupt-repo.
Dies ist nur der Grundgedanke...
Würden Sie müssen auch die Strategien auf, wie zu verzweigen. Ich würde empfehlen, Nvie Modell
Habe ich das Gefühl, der Flaschenhals ist nicht die Verzweigung oder Verzweigung. In beiden Ansätzen müssen Sie manuelle Eingriffe der Zusammenführung /überprüfung der änderungen.,
Also der Flaschenhals ist mit der application-development-Ansatz. Ich sehe ein problem, wenn ein team arbeitet auf die gleiche Datei. Mit einem richtigen Architektur-design, kann es aufgeteilt werden in separate Module mit einzelnen Dateien ? Auf Laufzeit oder Zeitpunkt der Erstellung, die einzelnen Module (oder Dateien) werden könnte, aggregiert für das gesamte feature (oder eine einzelne Datei).
Könnten wir lösen es in dieser Ebene, nachdem sich das team vergrößert oder die Funktion, die Komplexität steigt, werden die Dinge glatt zu skalieren.