我有以下结构:
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)
我该怎么做?
答案 0 :(得分:3)
假设您已检出branch-B:
git cherry-pick branch-A
git push . branch-C:branch-A -f
您现在可以选择删除branch-A或branch-C - 或者只保留两者。
答案 1 :(得分:1)
git checkout branch-B
git cherry-pick branch-A # you could also specify H directly
现在你有G在
git checkout branch-A
git reset --hard HEAD^ # you could also specify D directly
# HEAD is the current commit; HEAD^ is the previous one
现在你已经从包含A-B-C-D的分支中删除了H.
注意,如果在开始时有一些分支引用指向H和G,这只有意义,因为git中的提交对象包含它的祖先; “移动”提交并不意味着改变你的分支。