Mam prywatne repozytorium Git w BitBucket o prostej strukturze. Master jest dla wydań, istnieje gałąź deweloperów, która czasami się do tego łączy. Istnieją dwie lub więcej gałęzi od deweloperów dla poszczególnych osób. Używam najnowszego Tortoise Git, ale mogę używać gitbash lub innych narzędzi. Podążamy za tym wzorem
Pobierz z dev, utwórz gałąź mybranch, zmień / zatwierdz / zmień / zatwierdz, wypchnij. Zmień na dev, scal + squash ostatnie zatwierdzenia z mybranch, commit, push.
To wydaje się działać. Zarówno gałąź mybranch, jak i dev pokazują, czego się spodziewać.
Dalej: W mybranch zmień nazwę folderu, zatwierdź, wypchnij. Następnie spróbuj scalić tę zmianę w dev: Zmień na dev, scal + squash ostatnie zatwierdzenia z mybranch. To powoduje konflikt.
Nie rozumiem, dlaczego jest to szczególny przypadek ani jak go rozwiązać. Nie widzi katalogu o zmienionej nazwie jako usuniętego i dodanego. Kiedy jest kilka plików, które zostały przeniesione lub zmieniono ich nazwy, lokalna gałąź programistów zostaje częściowo zaktualizowana i kończy się w stanie bezużytecznym częściowych aktualizacji.
Próbowałem wielu sposobów na zmianę bazy, czyszczenie, ponowne klonowanie, przerywanie scalania, a w przeciwnym razie wracam do czystego ciągnięcia dev, abym mógł ponownie spróbować scalenia jednego lub więcej zatwierdzeń z mojego oddziału. Próbowałem wybrać tylko jedną zmianę z mojego oddziału na programistę i nadal przechodzę w ten dziwny stan.
Wiem, że konflikty mogą się zdarzyć, jeśli ktoś zaktualizuje gałąź (dev) z podobnymi zmianami po tym, jak wypchnąłem mój oddział, a następnie ponów próbę aktualizacji zawierającej sprzeczne zmiany. To nie ten scenariusz. W tym scenariuszu jestem jedynym, który aktualizuje dev i mybranch.
Jestem pewien, że w końcu mogę wymyślić, jak uzyskać indywidualne zmiany, aby zsynchronizować programistę z mybranch. W rzeczywistości, biorąc pod uwagę wzorzec i że jako jedyny ostatnio aktualizowałem programistę, mogłem z łatwością wymusić nacisk na mój oddział na programistę i będzie on miał wszystko, co powinien.
Ale chcę zrozumieć, dlaczego to jest tak FUBAR. Czy mam do czynienia ze znanym błędem? Czy nie przestrzegam prawidłowego wzoru? Przyjmę RTFM, ale muszę dokładnie wiedzieć, czego mi brakuje. Dzięki.
źródło