Mam otwarty pr w oddziale pod nazwą feature-b
to wkrótce będzie łączona z main
. Tym nie mniej, napisałem to, aby wspierać swoją feature-a
oddział, który trwa. Chcę kontynuować pracę nad feature-a
i korzystać z tej pracy, którą wykonałem w feature-b
przed tym, jak został połączony z main
.
Jak najlepiej to zrobić? Nasze połączenie z main
rozwalone, więc wszystkie commity na feature-b
będzie przepisany jako jeden commit, gdy jest on połączony w main
. Dlatego, relokacja feature-a
na feature-b
teraz doprowadzi do przyszłego konfliktu bólu, kiedy сольюсь feature-a
Dla main
bo jedne i te same zmiany zostaną wprowadzone w różne zmiany.
Jaki jest najlepszy sposób dla mnie, aby uwzględnić zmiany wprowadzone w feature-b
w moim feature-a
gałąź, minimalizując przyszłą ból, kiedy w końcu объединюсь feature-a
Dla main
?
Zaktualizować
Poszedłem dalej i:
- Przeniesiony
feature-a
nafeature-b
- Wprowadzono więcej zmian (tylko 1 blokada) w
feature-a
podczas gdyfeature-b
było - Squash-слитый
feature-b
jak tylko został zatwierdzony (żadnych dalszych zmian nie jest wymagane, więcfeature-a
już dokładny kod, który został połączony) - Wyciągnął ostatnią
main
i перебазировалсяfeature-a
na dodatek
Jak i obawiali się, git skarży się, że kilka plików "oba zmodyfikowane" lub "oba dodane". To samo w sobie byłoby to trochę irytujące, ale to łatwo naprawić. Co sprawia, że jest to bardzo mylące, zwłaszcza jeśli minęło trochę czasu-tak to komentarze korespondencji seryjnej w plikach.
Nawet pomimo faktu, że oba main
i feature-a
gałęzie mają jeden i ten sam kod we wszystkich plikach, dostaję bardzo irytujące zachowanie:
- Dla plików "oba dodane" są dodawane komentarze korespondencji seryjnej do "TYTUŁU (chwilowa)" i "rodzic #HASH (komunikat w sprawie zatwierdzenia)". Jestem zmuszony wybrać to jedno, to drugie, choć są zupełnie takie same!
- Dla obu zmienionych plików to jeszcze gorzej. "NAGŁÓWEK (chwilowa)" pokazuje prawidłowy kod. Jednak w dziale "rodzic #HASH (komunikat w sprawie zatwierdzenia)" pokazuje połowa kodu. Znowu, pomimo faktu, że w obu gałęziach jest cały kod!! Ja nie żartuję, biorąc "przychodzący zmiana" (jak to określono VS Code), to usuń kod, który znajduje się w obu gałęziach!
Gdybym nie wprowadził te zmiany w szybkiej sekwencji, byłem kompletnie zagubiony i zdezorientowany tym, że pokazuje mi, że jest git. To naprawdę się zdarzyło kilka razy w przeszłości, ale nie mogłem zrozumieć, co się dzieje nie tak. Teraz, kiedy odtworzyłem to i sprawdziłem zachowanie, jestem zupełnie zdezorientowany co do tego, co sprawia, że jest git i jak ludzie radzą sobie z tym scenariuszem.
AKTUALIZACJA 2
Dobrze, ja w pewnym sensie rozumiem, dlaczego chciał usunąć kod teraz. To dlatego, że zmiany, których dokonałem w feature-b
byli w kilku коммитах, i te zmiany okazały się rozbierać na części, gdy połączenie w main
stało się. Jest to bez wątpienia źródło bólu, i dlatego staram się wymyślić jakiś sensowny pracy.