改变来源提交

时间:2012-02-17 00:07:30

标签: git

我有以下结构:

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)

我该怎么做?

2 个答案:

答案 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中的提交对象包含它的祖先; “移动”提交并不意味着改变你的分支。