2012-08-29 23 views
6

Posiadamy gałąź master i produkcji . Główny oddział zawiera bieżące zmiany, podczas gdy gałąź produkcyjna zawiera elementy działające na serwerze. Od czasu do czasu występuje ważna poprawka, która musi być zastosowana do obu gałęzi.Alternatywy dla selekcji wiśni

Obecnie po prostu wyłapujemy commit po utworzeniu go w gałęzi głównej. Ale czasami powoduje to konflikty podczas scalania gałęzi. Czy istnieją alternatywy?

+0

To naprawdę nie jest pytanie "git". Konflikt seryjny, który widzisz, jest własnością twojego kodu (jest rozbieżny od czasu wdrożenia kodu produkcyjnego), a nie twojego narzędzia. Narzędzia git merge (lub dowolne narzędzia do scalania) nie potrafią odczytać twojego umysłu i zdecydować, co naprawdę "miałeś na myśli" za pomocą zmodyfikowanego kodu w master. Jeśli chodzi o narzędzia, 'git am' może działać lepiej niż wybór typu" wiśnia ", ponieważ pozwala edytować scalanie w miejscu bez utraty danych zatwierdzenia. –

Odpowiedz

7

Można utworzyć nowy oddział (nazwijmy go bugfix-a) u podstawy scalania master i production

git checkout -b bugfix-a $(git merge-base master production) 

Zastosuj Poprawka w tej gałęzi

>>/path/to/file echo 'this fixes the bug' 
git add /path/to/file 
git commit -m 'important bugfix' 

Następnie połączyć ten nowy gałąź do mastera i produkcji:

git checkout master 
git merge bugfix-a 
git checkout production 
git merge bugfix-a 

W ten sposób powinieneś być w stanie połączyć mistrz i produkcję w późniejszym terminie, a Git będzie na tyle sprytny, aby dowiedzieć się, który z nich chce wybrać.

(Monotonia - tak, to nie jest Git - nazywa to workflow daggy fixes)

4

Utwórz osobny oddział dla każdej poprawki, i połączyć je w swojej branży, zarówno rozwoju i gałąź produkcyjną.

gitflow modelu działa bardzo dobrze w ogóle, a ja polecam sprawdzenie na to uwagę: http://nvie.com/posts/a-successful-git-branching-model/

Twój mistrz oddziału jest analogiczna do ich rozwoju branży, a oddział produkcyjny jest analogiczna do swego pana

enter image description here

3

Można użyć Gitflow. Myślę, że "poprawka" obsługuje twój scenariusz.