Możesz skorzystać z przepływu pracy, który Scott Chacon opisuje w Pro Git . W tym przepływie pracy masz dwie gałęzie, które zawsze istnieją, opanowują i rozwijają się .
master reprezentuje najbardziej stabilną wersję twojego projektu i zawsze wdrażasz do produkcji z tego oddziału.
develop zawiera zmiany, które są w toku i niekoniecznie muszą być gotowe do produkcji.
Z rozwinięcia gałęzi, tworzenie tematycznych oddziałów do pracy na poszczególnych funkcji i poprawek. Gdy twoja funkcja / poprawka jest gotowa do użycia, łączysz ją w programowanie , w którym to momencie możesz przetestować, w jaki sposób współdziała ona z innymi gałęziami tematycznymi, w które włączyli się twoi współpracownicy. Gdy programowanie jest w stanie stabilnym, scal je w master . Wdrożenie do produkcji z poziomu głównego powinno zawsze być bezpieczne .
Scott opisuje te długo działające gałęzie jako „silosy” kodu, gdzie kod w mniej stabilnej gałęzi ostatecznie „przejdzie” do jednej uznanej za bardziej stabilną po przetestowaniu i ogólnej akceptacji przez zespół.
Krok po kroku przepływ pracy w tym modelu może wyglądać następująco:
- Musisz naprawić błąd.
- Utworzyć oddział o nazwie myfix , który jest oparty na rozwoju branży.
- Pracuj nad błędem w tej gałęzi tematu, aż zostanie naprawiony.
- Scal myfix w celu opracowania . Przeprowadź testy.
- Odkrywasz swoje konflikty poprawek z inną poprawką do gałęzi tematycznej, do której Twój współpracownik połączył się w rozwijanie podczas pracy nad poprawką.
- Wprowadź więcej zmian w gałęzi myfix, aby poradzić sobie z tymi konfliktami.
- Merge myfix do rozwoju i prowadzonych badań ponownie.
- Wszystko dziala. Scalanie rozwija się w mistrza .
- Wdrożyć do produkcji od mistrza w dowolnym momencie, ponieważ wiesz, że jest stabilny.
Aby uzyskać więcej informacji na temat tego przepływu pracy, zobacz rozdział Rozgałęzienia przepływu pracy w Pro Git.
develop
Jest unecessary „rozwiązanie” to problem, który nie posiada git. O ile mogę stwierdzić, sukces wynika z dobrze napisanego, jeśli wprowadzono w błąd artykułu bez komentarzy. Oto artykuł barro.github.io/2016/02/…Po przybyciu jako nowicjusz próbuje znaleźć prostą strategię nauczania innym deweloperom, którzy nigdy nie korzystali z kontroli źródła. Jest to ten, który pasuje do 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 nieco mnie zdezorientowało i moich odbiorców.
W ciągu ostatnich 6 miesięcy musiałem naprawiać konflikty tylko dwa razy. Dodałem kroki, aby zawsze testować po scaleniu i często „pobierać i łączyć” lub „ściągać --rebase” (raz rano i popołudniu) podczas opracowywania funkcji. Użyliśmy również github.com jako centralnego miejsca do pobrania najnowszego kodu.
źródło
default master branch
NIE jest używany najczęściej programista w tymA successful Git branching model
(Mój komentarz powyżej jest własną odpowiedzią, jak powinienem był początkowo.)
Od Scott Chacon z Github:
Zobacz cały artykuł, aby uzyskać więcej informacji: http://scottchacon.com/2011/08/31/github-flow.html
Zauważ, że „żądania ściągania” są wynalazkiem Github i jest to coś, co wypiekło się na ich stronie internetowej, a nie w samej Git: https://help.github.com/articles/using-pull-requests/
źródło
Używaj
master
gałęzi jako gałęzi programistycznej i twórz gałęzie wersji do wykonywania poprawek błędów.Wszelkie nowe funkcje pojawią się
master
w oknie programowania (zatwierdzone bezpośrednio lub jako gałęzie tematów z żądaniami ściągania, zależnie od Ciebie - nie pokazane graficznie). Po wdrożeniu wszystkich zaplanowanych funkcji, wprowadź funkcję zamrażania funkcji i przeprowadź testy. Kiedy będziesz zadowolony, oznacz wydaniemaster
jakov1.0
.Z czasem użytkownicy znajdą błędy,
v1.0
więc będziesz chciał utworzyć gałąź z tego tagu (np. Nazwać ją po wydaniu1.0
) i naprawić te błędy w gałęzi. Kiedy masz już wystarczającą liczbę poprawionych błędów, które Twoim zdaniem wymagają wydania nowego wydania, oznacz je jakov1.0.1
i połącz z powrotemmaster
.Tymczasem w
master
gałęzi może pojawić się nowe okno programowania, które ostatecznie zostanie oznaczone jakov1.1
.Opłucz i powtórz.
Jest to zgodne z logiką numeracji wersjonowania semantycznego .
źródło
1.0.1
zmian z powrotem domaster
1.1
po połączeniu1.0.1
bazować na kapitale głównym - pomaga to zminimalizować konflikt.1.1
jest gałęzią wydań i ma znaczniki reprezentujące dokładny stan jednego lub więcej wydań. Odtworzenie tej gałęzi spowodowałoby utratę tej reprezentacji. Zdecydowanie zalecam ustawienie gałęzi wydania tak, aby odmawiały wypychania siły, aby temu zapobiec.W VCS posiadanie tylko gałęzi „master” szybko pokazuje swoje ograniczenia, ponieważ nie można wykonywać wszystkich prac programistycznych jednocześnie w jednym oddziale.
Oznacza to, że musisz wiedzieć, kiedy się rozgałęzić .
Ale w DVCS (jak w „zdecentralizowanym” VCS) masz również problem z publikacją z , z gałęziami, które trzymasz lokalnie w swoich repozytoriach, i gałęziami, do których pchasz lub z których wyciągasz.
W tym kontekście zacznij od określenia współbieżnych prac programistycznych i zdecyduj o procesie publikacji (push / pull). Na przykład (i to nie jedyny sposób):
nikt nie powinien naciskać bezpośrednio na prod (stąd tylko do odczytu)
Każdy może naciskać na wydanie, aby zaktualizować następne wydanie.
Każdy może wycofać się ze wspomnianego wydania, aby zaktualizować swój proces konsolidacji lokalnej.
Istnieją inne procesy zarządzania wersjami, jak potwierdza to pytanie SO .
źródło
Przeczytaj tutaj Git Workflow ReinH dla zespołów Agile: http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html
Działa to bardzo dobrze w przypadku małych zespołów. Celem jest upewnienie się, że wszystko, co może być potencjalnie niestabilne, trafi do jakiejś gałęzi. Scalanie z powrotem do wzorca tylko wtedy, gdy jesteś gotowy, aby wszyscy pracujący poza gałęzią funkcji mogli z niego korzystać.
Uwaga: ta strategia nie jest specyficzna dla git, ale git sprawia, że jej implementacja jest dość łatwa.
źródło