2013-02-04 20 views
17

A masz repozytorium z dwoma oddziałami.Git: przenieś konkretne zatwierdzenia do innej gałęzi

Mistrz oddział zobowiązuje:

C1, C2, C3, C4, C5, C6, C7, C15 ... ...

Oddział Staging zobowiązuje:

C1, C2 , C3, C4, C5, C6, C7

Chcę przenieść wszystkie zobowiązuje od głównego oddziału po c7 do inscenizacji oddział

a następnie powrócić Mas ter oddział

z

git reset --hard c7-hash 

Jak przenieść/skopiować szczegółowe rewizje z jednego oddziału do drugiego?

+3

W tym przypadku nie trzeba przesuwać zatwierdzeń, ponieważ gałąź testowa może być szybko przekazywana dalej opanować. 'git checkout inscenizacja', ' git merge master', 'git checkout master', ' git reset - twarde c7-hash' – tewe

+0

możliwy duplikat [Jak przenieść określone zatwierdzenia do innej gałęzi w git?] (http://stackoverflow.com/questions/2369426/how-to-move-certain-commits-to-another-branch-in-git) – Kevin

+0

możliwy duplikat [Jak mogę przenieść ostatnie commit (s) do nowego oddziału z git?] (http://stackoverflow.com/questions/1628563/how-can-i-move-recent-commits-to-a-new-branch-with-git) –

Odpowiedz

35

W przypadku opisałeś, gdzie wszystko popełnia na gałęzi staging są również na gałęzi głównej, to jest bardzo proste:

git checkout staging 
git merge master 
git checkout master 
git reset --hard c7-hash 

Przejęcie będzie do przodu.

W ogólnym przypadku można użyć git cherry-pick c8 c9 c10 c11 c12 c13 c14 c15, aby wybrać poszczególne zatwierdzenia do bieżącego oddziału. Krótszy sposób wybierania wszystkich zatwierdzeń, które znajdują się w systemie nadrzędnym, ale nie w bieżącym oddziale, to git cherry-pick ..master, a istnieją inne przykłady pokazane przez git help cherry-pick

+0

Po wykonaniu tego powiedzmy, że zatwierdzasz ' x' do gałęzi głównej. A potem łączysz mistrza w inscenizację. Czy scalenie w etapowanie poprawnie scaliłoby 'x' w inscenizację, podczas gdy _nie_ cofnęło c8 ... c15 w inscenizacji ze względu na fakt, że te zatwierdzenia zostały już zresetowane w master? Chcesz zapewnić c8 ... c15 pozostać w inscenizacji po tym połączeniu. –

+0

@MarcusLeon, scalanie nie przywróci tych zatwierdzeń. Te poprawki nie zostały przywrócone do wzorca, zostały całkowicie usunięte. Reset nie jest odwrotny. Łatwo jest stworzyć testowe zatwierdzenia i testować takie scenariusze, spróbuj. –

Powiązane problemy