Opieram moje repozytorium Git na udanym modelu rozgałęziania Git i zastanawiałem się, co się stanie, jeśli masz taką sytuację:
Powiedzmy, że rozwijam dwie gałęzie funkcji A i B, a B wymaga kodu z A. Węzeł X wprowadza błąd w funkcji A, który wpływa na gałąź B, ale nie jest to wykrywane w węźle Y, gdzie funkcje A i B zostały połączone i testy przeprowadzono przed ponownym rozgałęzieniem i pracą nad następną iteracją.
W rezultacie błąd znajduje się w węźle Z przez osoby pracujące nad funkcją B. Na tym etapie zdecydowano, że potrzebna jest poprawka. Ta poprawka powinna być zastosowana do obu funkcji, ponieważ osoby pracujące nad funkcją A również potrzebują naprawy błędu, ponieważ jest to część ich funkcji.
Czy gałąź błędu powinna zostać utworzona z najnowszego węzła funkcji A (tej rozgałęzionej z węzła Y), a następnie połączona z funkcją A? Po czym obie funkcje zostaną ponownie opracowane i przetestowane przed rozgałęzieniem?
Problem polega na tym, że wymaga to połączenia obu gałęzi w celu rozwiązania problemu. Ponieważ funkcja B nie dotyka kodu w funkcji A, czy istnieje sposób na zmianę historii w węźle Y poprzez wdrożenie poprawki i nadal pozwalanie, aby gałąź funkcji B pozostała nie połączona, a mimo to ma stały kod z funkcji A?
Łagodnie powiązane: Konwencja rozgałęziania błędów Git
Odpowiedzi:
Użyj odrębnego zatwierdzenia, aby naprawić błąd w jednej gałęzi, a następnie wybierz wiśni, który zatwierdza w drugiej gałęzi.
źródło
Prawdopodobnie nie ma błędu w A lub X. Napraw błąd w gałęzi B, w której został znaleziony. Poprawka zostanie propagowana do X i A w normalnym toku zdarzeń.
źródło
Chociaż nie jest to popularny przepływ pracy
git
, przepływ pracy, który jest popularny w Mercurial, polegałby na aktualizacji do wersjiX
, naprawieniu błędu (jakoX
2 ), a następnie ponownym scaleniuY
(co byłoby parą scaleń w Mercurial).W rzeczywistości, to pracy jest łatwiejsze
git
, ponieważ każdy ma po włączeniu odY
doY
2 wtedy sędziowie z oryginałemY
zostaną utracone, a to w końcu będą zbierane śmieci. Whg
tym przypadku musiałbyś ręcznie usunąć te zobowiązania, aby uporządkować swoje repozytorium.źródło