Korzystam z git w nowym projekcie, który ma dwie równoległe - ale obecnie eksperymentalne - gałęzie programistyczne:
master
: import istniejącej bazy kodu oraz kilka modów, których jestem ogólnie pewienexp1
: gałąź eksperymentalna # 1exp2
: gałąź eksperymentalna # 2
exp1
i exp2
reprezentują dwa bardzo różne podejścia architektoniczne. Dopóki nie przejdę dalej, nie mam możliwości dowiedzieć się, który z nich (jeśli którykolwiek) zadziała. Gdy robię postępy w jednej gałęzi, czasami mam zmiany, które byłyby przydatne w drugiej gałęzi i chciałbym scalić tylko te.
Jaki jest najlepszy sposób łączenia selektywnych zmian z jednej gałęzi rozwoju do drugiej, pozostawiając za sobą wszystko inne?
Podejścia, które rozważałem:
git merge --no-commit
po czym następuje ręczne odstawianie dużej liczby zmian, których nie chcę robić wspólnie między gałęziami.Ręczne kopiowanie wspólnych plików do katalogu tymczasowego, a następnie
git checkout
przejście do drugiej gałęzi, a następnie dalsze ręczne kopiowanie z katalogu tymczasowego do drzewa roboczego.Odmiana powyższego. Na razie porzuć
exp
gałęzie i użyj dwóch dodatkowych lokalnych repozytoriów do eksperymentów. Dzięki temu ręczne kopiowanie plików jest znacznie prostsze.
Wszystkie trzy podejścia wydają się nużące i podatne na błędy. Mam nadzieję, że istnieje lepsze podejście; coś podobnego do parametru ścieżki filtru, który uczyniłby git-merge
bardziej selektywnym.
git merge -s ours --no-commit
następujących po nich nie git read-tree
byłoby dobrym rozwiązaniem? Zobacz stackoverflow.com/questions/1214906/…