A' commit A, , .branch-name* branch-name - HEAD
B
/ \
\ /
F
, , D H , . , , , , . M1 M2 .
:
git checkout master
git reset --hard A
\
B
git checkout -b feature1 D ( , )
=> feature1
/
B -- C -- D -- E -- F -- G -- H
/
-- A => master*
git merge --no-ff feature1
=> feature1
/
B -- C -- D -- E -- F -- G -- H
/ \
-- A ------------- M1 => master*
git cherry-pick E
=> feature1
/
B -- C -- D -- E -- F -- G -- H
/ \
-- A -------------- M1 -- E' => master*
git checkout -b feature2 H
=> feature1
/
B -- C -- D -- E -- F -- G -- H => feature2*
/ \
-- A -------------- M1 -- E' => master
git rebase --onto E master
Reset , : E H rebase.
, E, E', --onto - , , , . git rebase --onto F^ master, F^ F Git.
=> feature1
/
B -- C -- D -- E -- F -- G -- H
/ \
-- A -------------- M1 -- E' => master
\
F' -- G' -- H' => feature2*
git checkout master
=> feature1
/
B -- C -- D -- E -- F -- G -- H
/ \
-- A -------------- M1 -- E' => master*
\
F' -- G' -- H' => feature2
git merge --no-ff feature2
=> feature1
/
B -- C -- D -- E -- F -- G -- H
/ \
-- A ------------ M1 -- E' --------------- M2 => master*
\ /
F' -- G' -- H' => feature2
, - ref, , :
B -- C -- D => feature1
/ \
-- A ------------ M1 -- E' --------------- M2 => master*
\ /
F' -- G' -- H' => feature2