Git删除分支之间的提交

时间:2013-09-20 09:01:13

标签: git git-commands



我在Git中有以下历史:

(master) A - B - C
                  \
(dev)              D - E - F - G - H - I

我想创建这样的东西:

(master) A - B - C
                 | \
(patch_1)        |- E' - G' (G' shouldn't contain the changes happened at F commit)
(patch_2)        |- D' - F' (F' shouldn't contain the changes happened at E commit)
(dev)            |- D - E - F - G - H - I

是否可以创建这样的东西?

如果不可能,从以下选项中可以做得更好:
1.从头开始重写代码?
2.将所有这些提交压缩成一个“好”和大提交消息?

1 个答案:

答案 0 :(得分:0)

我能想到的一个可能的解决方案是使用git cherry-pick。

  1. 更改为dev分支,获取E,G,D和F的SHA-1提交(使用git log --oneline)。

  2. 从master分支创建patch_1分支并发出git cherry-pick命令,其中包含E,G的SHA-1(作为参数)。

  3. 从master分支创建patch_2分支并发出带有D,F的SHA-1的git cherry-pick命令(作为参数)。