Naprawdę powinieneś mieć przepływ pracy, który pozwoli ci to wszystko scalić:
- x - x - x (v2) - x - x - x (v2.1)
\
x - x - x (wss)
Więc wszystko co musisz zrobić, to git checkout v2.1
i git merge wss
. Jeśli z jakiegoś powodu tak naprawdę nie możesz tego zrobić i nie możesz użyć git rebase, aby przenieść gałąź wss we właściwe miejsce, polecenie pobrania jednego skoku z dowolnego miejsca i zastosowania go w innym miejscu jest git cherry-pick . Po prostu sprawdź gałąź, na której chcesz ją zastosować, i uruchom git cherry-pick <SHA of commit to cherry-pick>
.
Niektóre sposoby rebase mogą cię uratować:
Jeśli twoja historia wygląda tak:
- x - x - x (v2) - x - x - x (v2.1)
\
x - x - x (v2-only) - x - x - x (wss)
Możesz użyć git rebase --onto v2 v2-only wss
do przeniesienia wss bezpośrednio na v2:
- x - x - x (v2) - x - x - x (v2.1)
|\
| x - x - x (v2-only)
\
x - x - x (wss)
Następnie możesz się połączyć! Jeśli naprawdę, naprawdę, naprawdę nie możesz dojść do punktu, w którym możesz się połączyć, nadal możesz użyć rebase, aby skutecznie wykonać kilka wyborów jednocześnie:
# wss-starting-point is the SHA1/branch immediately before the first commit to rebase
git branch wss-to-rebase wss
git rebase --onto v2.1 wss-starting-point wss-to-rebase
git checkout v2.1
git merge wss-to-rebase
Uwaga: powodem jest to, że wymaga to dodatkowej pracy, ponieważ tworzy duplikaty zatwierdzeń w repozytorium. To naprawdę nie jest dobra rzecz - celem łatwego rozgałęziania i łączenia jest możliwość zrobienia wszystkiego, czyniąc zatwierdzenie (-a) w jednym miejscu i łącząc je tam, gdzie są potrzebne. Duplikaty zatwierdzeń oznaczają zamiar, aby nigdy nie łączyć tych dwóch gałęzi (jeśli zdecydujesz, że chcesz później, dostaniesz konflikty).