2009-10-06 11 views
5

Typowy scenariusz użycia:Zatwierdź zmianę w więcej niż jednym oddziale w Git

Mam master, branch_foo i branch_bar. Wszystkie są aktualne. Teraz robię "GIT Checkout Master" i pracuję nad naprawieniem błędu.

Powiedzmy, że poprawka dotyczyła śledzonego pliku, który znajduje się w tym samym stanie we wszystkich gałęziach - tj. przed poprawką różnica w pliku z każdej gałęzi nie powoduje żadnych różnic.

Czy istnieje sposób na zatwierdzenie tej poprawki dla wszystkich oddziałów?

Odpowiedz

5

Oczekuję, że git cherry-pick jest tym, czego potrzebujesz.

Po zatwierdzeniu poprawki do pierwszego oddziału można użyć numeru git cherry-pick, aby scalić go z każdą z pozostałych gałęzi.

to pytanie na temat zatem mogą być interesujące: Git & Working on multiple branches

+0

Tak myślałem o git cherry-pick. Zastanawiałam się tylko, czy istnieje szybsza droga. – Carl

+0

Dzięki :) Powiązane pytanie było dokładnie tym, czego potrzebowałem. – Carl

9

Wspólne podejście to jest „połączenia w górę”. Od man gitworkflows:

Zawsze zatwierdzaj poprawki do najstarszego wspieranego oddziału, który ich wymaga. Następnie (okresowo) scalaj gałęzie integracji w górę do siebie.

Daje to bardzo kontrolowany przepływ poprawek. Jeśli zauważysz, że zastosowałeś poprawkę do np. master, który jest również wymagany w maint, będziesz musiał wybrać go (używając git-cherry-pick (1)) w dół. Stanie się to kilka razy i nie ma się czym martwić, chyba że robisz to bardzo często.

Pierwsza metoda jest oczywiście korzystne - dobrze jest mieć w swoim repo popełnić tylko raz, aby móc zobaczyć historię w jaki sposób dostał się do każdej gałęzi. Życie nie jest idealne, a czasami znajdziesz się w drugiej kategorii. Jeśli ta sytuacja staje się na tyle powszechne, można chyba napisać skrypt jak

multi-cherry-pick <commit> <branch> [<branch>...] 

który sprawdza każdą gałąź z kolei i cherry-odbiera dany popełnić.

5

Tak, jest. Dodać do tego zobowiązać na osobnym temacie (cecha) oddział (odgałęzienie najstarszy oddział/najwcześniejszy stan), a następnie połączyć ten temat oddział w dowolnym oddziale chcesz.

obieg ten jest opisany na przykład w Never merging back blogu przez Junio ​​C Hamano (opiekunowi GIT).

To jest mniej więcej to, co Jefromi wrote napisał

+0

Dzięki. Tak, skończyłem używając gałęzi tematycznych. Przyjęta odpowiedź na pytanie, do którego skierował mnie Tim, została również napisana przez Ciebie i była dokładnie tym, czego potrzebowałam :) – Carl

Powiązane problemy