我有以下結構:更改源提交
A-B-C-D (branch-C)
\ \
\ H (branch-A)
\
\-E-F-G (branch-B)
我想是這樣的:
A-B-C-D (branch-A and branch-C)
\
\
\
\-E-F-G-H (branch-B)
我該怎麼辦呢?
我有以下結構:更改源提交
A-B-C-D (branch-C)
\ \
\ H (branch-A)
\
\-E-F-G (branch-B)
我想是這樣的:
A-B-C-D (branch-A and branch-C)
\
\
\
\-E-F-G-H (branch-B)
我該怎麼辦呢?
假設你有分支-B簽出:
git cherry-pick branch-A
git push . branch-C:branch-A -f
您現在可以刪除任一分支-A或分支機構-C選擇 - 或者只是保持兩者。
git checkout branch-B
git cherry-pick branch-A # you could also specify H directly
現在你有ħ頂上G.
從含有A-B-C-d的分支git checkout branch-A
git reset --hard HEAD^ # you could also specify D directly
# HEAD is the current commit; HEAD^ is the previous one
現在已經移除小時。
請注意,這隻有在分支引用指向H和G時纔有意義,因爲git中的提交對象合併了它的祖先; 「移動」提交併不意味着它改變了你的分支。
對於OP:將G和H替換爲在這些提交中開始的分支。 (這就是Borealid在最後一段中的看法,但我認爲這樣做會更清楚一些。) – Cascabel 2012-02-17 04:40:47
我冒昧地爲你貼了幾個分支;這會幫助答案變得更好。 – Cascabel 2012-02-17 04:52:21
添加分支C使其更好:) – 2012-02-17 09:21:24