2013-03-25 7 views
6

In einem meiner Universitätsprojekte bin ich in einer Gruppe von 4 Entwicklern mit der Entwicklung einer Webanwendung von Grund auf beauftragt. Wir alle haben ein sehr grundlegendes Verständnis von Git und entschieden uns dafür, es für die Code-Base-Collaboration einzusetzen, wir haben ein Repo-Setup und jeder ist ein Mitarbeiter von GitHub.Mit Git für die Zusammenarbeit an einem 4-Personen-Projekt

In den letzten paar Monaten haben wir einfach geklont und an den Master-Zweig übergeben, und das hat gut funktioniert. In letzter Zeit gab es jedoch Zeiten, in denen zwei oder mehr Leute gleichzeitig an der Code-Basis arbeiten und wir oft mit einigen Leuten hinter uns stehen, die hinter den Commits stecken und das Repo klonen müssen, bevor sie begehen, was manchmal in ihren Änderungen endet hat verloren.

Heute sprach einer der Gruppenmitglieder davon, einen "Entwicklungszweig" zu haben, den wir alle klonen und an dem wir uns festmachen, und dann am Ende jedes Sprints in den Master-Zweig übergehen. Wir haben das versucht, aber wir haben keine Verbesserung gesehen, da wir immer noch mit der gleichen Code-Basis arbeiten, so dass das gleiche Problem wie zuvor auftritt.

Jemand anderes hatte die Idee, das Hauptrepo zu forkieren (das ist etwas neues für mich), daran zu arbeiten und dann Pull-Requests an das Hauptrepo zu senden, was dann zusammengeführt werden kann. Das klingt in der Praxis gut Planen Sie, denn die Änderungen können überprüft und behoben werden, wenn der Code beschädigt wird. So verstehe ich es jedenfalls.

Aber wie gesagt, wir sind alle ziemlich neu bei Git und haben ein sehr grundlegendes Verständnis für die ganze Idee. Wie organisiert man normalerweise ein Team von 4 Entwicklern, die an einem Git Repo arbeiten? Ich habe mir einige Git-Dokumentationen angeschaut, aber es ist alles ziemlich verwirrend für jemanden, der nur wirklich weiß, wie man einen Master-Zweig klont und festlegt.

Vielen Dank für jede Hilfe!

+0

Sie schreiben „den Repo-Klon vor commiting, die bis manchmal endet in ihre Änderungen verloren“. Wie können irgendwelche Änderungen verloren gehen? Sind Sie sicher, ziehen Sie Änderungen aus dem Master-Zweig? Wenn Sie dies tun, dürfen Sie keine Daten verlieren. Parallele Änderungen an gleichen Dateien würden automatisch von git zusammengeführt. Alternativ würden Sie nur einen Konflikt bekommen. – harpun

+0

merke ich, wie dumm meine Art und Weise war jetzt zu denken, aber es war mein Verständnis, dass, wenn zwei Menschen auf der gleichen Datei arbeiten, und beide Menschen begehen, derjenige, der die Änderungen der Person begangen wurde, bevor sie begehen letzte überschreibt. Ich denke, wir haben jedoch einige Konfliktfehler bekommen, die uns ein wenig die Wand hochgetrieben haben. –

+0

Versuchen http://try.github.com/levels/1/challenges/1 und http://atlassian.com/git/tutorial/git-basics für gute git Tutorials. Mit der [zentralisiert Workflow] (http://atlassian.com/git/workflows#!workflow-centralized) sollten für den Anfang ausreichen. Keine Notwendigkeit, die Dinge verkomplizieren :) – harpun

Antwort

0

Wenn man davon spricht, dass Dinge in Entwicklungsmethoden "Standard" sind, ist das gefährlich, weil es so etwas fast gar nicht gibt. Gruppen von Entwicklern neigen dazu, sich auf eine Weise zu organisieren, die für sie funktioniert (oder in der Art, wie das Management ihnen sagt, dass sie sich selbst organisieren sollen).

Alle von Ihnen identifizierten Ansätze sind gültige Methoden zur Verwendung verteilter Versionskontrollsysteme. Ich schlage vor, dass Sie keinen großen Nutzen aus den Alternativen ziehen, weil Sie an einem universitären Projekt mit einem kleinen Team von Menschen arbeiten, die an derselben geografischen Position sind, dieselbe Sprache sprechen, ähnliche Fähigkeiten haben und mit ähnlich klare Vorstellungen davon, was das Ergebnis sein sollte. Git tendiert dazu zu leuchten, wenn das nicht der Fall ist.

Für verteilte Projekte, in denen Sie wirklich wollen, dass eine Person als Gatekeeper für die kanonische Version des Projekts fungiert, funktionieren Pull-Requests wirklich gut. Wenn Sie möchten, dass jeder effektiv denselben Commit-Zugriff hat, ist ein Entwicklungszweig eine gute Lösung. Die Leute neigen dazu, Entwicklungszweige zu verwenden, damit sie eine ständig funktionierende Version haben, die von den Leuten benutzt wird. Ich gehe davon aus, dass Sie derzeit keine Nutzer haben, weshalb Sie von diesem Ansatz wahrscheinlich nicht viel profitieren werden.

Ich würde im Grunde so weitermachen, wie Sie sind, es sei denn, Sie sprechen miteinander und entscheiden, dass etwas nicht für Sie als Team funktioniert. In diesem Fall können Sie entscheiden, ob eine der anderen Arbeitsweisen besser für Sie ist Sie.

+0

Alles klar, danke. Ich denke, ein Ansatz „Pförtner“ best hier sein würde, wie wenn wir alle kompetent sind, unsere Fähigkeiten in verschiedenen Bereichen sind (zwei Backend-Programmierer, eine Benutzeroberfläche Kerl, Projektmanagement Typ etc ...), also wird mich tiefer aussehen in die Benutzer zu verzweigen und den Repo zu ziehen. –

3

Sie müssen in Git Workflow und/oder verzweigende Modelle suchen. Es gibt viele, und hier ist ein Einstieg:

A successful git branching model

Sie müssen sich über die Vorstellung von Veröffentlichungen denken, Inszenierung, Produktion und so weiter, denn das ist einfach dargestellt werden können. Es geht im Grunde nur um Organisation.

+1

Das ist viel wie das, was wir versuchen, früher heute mit dem Entwicklungszweig, nur komplexere Branchen wie Hotfixes und Funktionen zu unterstützen. Für unser Projekt habe ich jedoch das Gefühl, dass dies zu kompliziert wäre, obwohl ich mich nach einfacheren Modellen umsehe. Vielen Dank! –

Verwandte Themen