Git branch strategy for small dev team [closed]
Mamy aplikację internetową, którą aktualizujemy i wypuszczamy prawie codziennie. Używamy git jako naszych VC, a nasza obecna strategia rozgałęzień jest bardzo prosta i zepsuta: mamy gałąź master i sprawdzamy zmiany, z którymi "czujemy się dobrze" w niej. To działa, ale tylko do momentu, gdy sprawdzimy zmianę.
Czy ktoś ma ulubioną strategię git branch dla small teams która spełnia następujące wymagania:
- działa dobrze dla zespołów od 2 do 3 programistów
- Lightweight, i nie za dużo procesu
- pozwala programistom z łatwością wyizolować pracę nad poprawkami błędów i większymi funkcjami
- pozwala nam utrzymać stabilną gałąź (dla tych "O cholera" momentów, kiedy musimy uruchomić nasze serwery produkcyjne)
Idealnie, chciałbym zobaczyć twój proces krok po kroku dla dewelopera pracującego nad nowym błędem
6 answers
Możesz skorzystać z przepływu pracy, który Scott Chacon opisuje w Pro Git . W tym obiegu pracy zawsze istnieją dwie gałęzie: master i develop .
master reprezentuje najbardziej stabilną wersję Twojego projektu i wdrażasz go do produkcji tylko z tej gałęzi.
develop zawiera zmiany, które są w toku i niekoniecznie muszą być gotowe do produkcji.
Z gałęzi develop tworzysz gałęzie tematyczne do pracy nad poszczególnymi funkcjami i poprawkami. Gdy twoja funkcja / poprawka jest gotowa do pracy, łączysz ją w develop , w którym to momencie możesz sprawdzić, jak współdziała z innymi gałęziami tematycznymi, do których połączyli się Twoi współpracownicy. Gdy develop jest w stanie stabilnym, połącz go z master. Zawsze powinno być bezpiecznie wdrożyć do produkcji z master .
Scott opisuje te długie gałęzie jako "silosy" kodu, gdzie kod w mniej stabilnej gałęzi ostatecznie "absolwent" do jednego uważanego za bardziej stabilny po testach i ogólnej akceptacji przez zespół.
Krok po kroku, twój przepływ pracy w tym modelu może wyglądać tak:
- musisz naprawić błąd.
- Utwórz gałąź o nazwie myfix , która jest oparta na gałęzi develop .
- pracuj nad błędem w tej gałęzi tematu, dopóki nie zostanie naprawiony.
- Połącz myfix W rozwiń . Przeprowadzić testy.
- odkrywasz swoją poprawkę konflikt z inną gałęzią tematyczną hisfix, który twój współpracownik połączył w develop podczas pracy nad poprawką.
- wprowadzić więcej zmian w gałęzi myfix , aby poradzić sobie z tymi konfliktami.
- Połącz myfix W rozwiń i uruchom testy ponownie. Wszystko działa dobrze. Połącz rozwiń W master .
- wdrożyć do produkcji z master w dowolnym momencie, ponieważ wiesz, że to stabilny.
Aby uzyskać więcej informacji na temat tego przepływu pracy, zapoznaj się z rozdziałem rozgałęzienia przepływu pracy w Pro Git.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-08 05:30:50
Po przybyciu jako początkujący, próbując znaleźć prostą strategię nauczania dla innych programistów, którzy nigdy nie używali kontroli nad źródłami. This is the one that fit http://nvie.com/posts/a-successful-git-branching-model / próbowałem użyć standardowego przepływu pracy GIT, który znajduje się na stronach podręcznika, ale trochę mnie to zdezorientowało i całkowicie zdezorientowało moich odbiorców.
W ciągu ostatnich 6 miesięcy musiałem naprawiać konflikty tylko dwa razy. Dodałem kroki, aby zawsze testować po połączeniu i "fetch and merge" lub 'pull --rebase' często (raz rano i po południu) podczas tworzenia funkcji. Wykorzystaliśmy również github.com jako centralne miejsce do wyciągania najnowszego kodu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-06 16:39:53
(zrobiłem mój komentarz powyżej jest własna odpowiedź, jak powinienem był na początku.)
Od Scotta Chacona z Githuba:Jak to robimy, czym jest GitHub Flow?
Wszystko w gałęzi master może zostać wdrożone]}
- aby pracować nad czymś nowym, Utwórz opisowo nazwaną gałąź poza master (ie: new-OAuth2-scopes)
- Zatwierdź tę gałąź lokalnie i regularnie wypychaj swoją pracę do tej samej gałęzi o tej samej nazwie na serwerze
- Kiedy potrzebujesz informacji zwrotnej lub pomocy, lub uważasz, że gałąź jest gotowa do scalenia, otwórz pull request
- po tym, jak ktoś inny przejrzał i podpisał się na funkcja, możesz połączyć go w master
Po połączeniu i naciśnięciu przycisku "master", Możesz i powinieneś natychmiast wdrożyć]}
Zobacz cały artykuł po więcej szczegółów: http://scottchacon.com/2011/08/31/github-flow.html
Zauważ, że "pull requests" to Github wynalazek, a to coś, co jest na ich stronie, a nie sam Git: https://help.github.com/articles/using-pull-requests/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:34
Użyj gałęzi master
jako gałęzi programistycznej i utwórz gałęzie Wydania do wykonywania poprawek błędów.
Wszelkie nowe funkcje pojawią się master
w oknie deweloperskim(albo bezpośrednio lub jako gałęzie tematyczne z pull-requestami, do ciebie-nie pokazane w grafice). Po wdrożeniu wszystkich zaplanowanych funkcji wprowadź funkcję zamrożenie i wykonaj testy. Kiedy jesteś szczęśliwy, Oznacz Wydanie master
jako v1.0
.
Z czasem Twoi użytkownicy znajdą błędy w v1.0
więc będziesz chciał utworzyć gałąź z tego tagu (np. nazwij ją po wydaniu 1.0
) i naprawić te błędy w gałęzi. Gdy naprawisz wystarczająco dużo błędów, że wydaje ci się, że gwarantuje nowe wydanie, oznacz je jako v1.0.1
i połącz z powrotem do master
.
Tymczasem w gałęzi master
może pojawić się nowe okno rozwoju, które ostatecznie zostanie oznaczone jako v1.1
.
Spłukać i powtórzyć.
Wynika to z semantycznego wersjonowania logiki numerowania.
---------(v1.0)--------------------------------(v1.1)-----------------------------> master
\ \
---(v1.0.1)---(v1.0.2)---> 1.0 ---(v1.1.1)---(v1.1.2)---> 1.1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 00:36:19
W VCS, posiadanie tylko gałęzi" master " szybko pokazuje jej granice, ponieważ nie można kontynuować całego wysiłku rozwojowego w tym samym czasie na jednej gałęzi.
To znaczy, że musisz wiedzieć Kiedy do oddziału.
Ale w DVCS (jak w "zdecentralizowanych" VCS), masz równieżwydanie publikacji, dzięki gałęziom utrzymujesz lokalne repozytoria i gałęzie, do których pchasz lub z których ciągniesz.
W tym kontekście zacznij od zidentyfikowania swojego współbieżny wysiłek rozwojowy i zdecydować się na publikację (push/pull) proces. Na przykład (i nie jest to jedyny sposób):
- prod jest publiczną gałęzią tylko do odczytu z kodem w produkcji. Każdy mógł z niego wyciągnąć, aby:
- W 2007 roku, w 2008 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku]}
- gałąź do robienia nowych funkcji (ze znanej stajni kod)
- gałąź do uruchomienia kolejnej gałęzi wydania (tej, która ma być w produkcji)
nikt nie powinien naciskać bezpośrednio na prod (stąd tylko do odczytu)
- release jest gałęzią konsolidacji odczytu i zapisu, w której odpowiednie commity są wybierane jako część następnego wydania.
Każdy może nacisnąć do wydania, aby zaktualizować następne wydanie.
Każdy może wyciągnąć z tego wydania, aby zaktualizować swój lokalny proces konsolidacji. - featureX jest prywatna gałąź odczytu i zapisu (w tym sensie, że nie musi być wciskana do centralnego repo prod), i może być wciskana / ciągnięta pomiędzy reposami dev. To oznacza średnio-i długoterminowy wysiłek, inny niż codzienny dev
- master reprezentuje bieżący dev i jest wciskany / ciągnięty pomiędzy repozytorium dev.
Istnieją inne procesy zarządzania wydaniami, ponieważ to więc pytanie potwierdza .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:59
Przeczytaj ReinH ' s Git Workflow for Agile teams tutaj: http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html
To działa bardzo dobrze dla małych zespołów. Celem jest upewnienie się, że wszystko, co może być potencjalnie niestabilne, trafi do jakiejś gałęzi. Scal z powrotem do wzorca tylko wtedy, gdy będziesz gotowy, aby wszyscy pracujący poza gałęzią funkcji mogli z niego korzystać.
Uwaga: Ta strategia nie jest specyficzna dla Gita, ale git sprawia, że implementacja tego strategia całkiem łatwa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-12 14:53:56