结合几个提交。 Git rebase

时间:2011-12-13 15:21:30

标签: git merge tags rebase

我有这个

-A-B-C-D-

-A-E-F-G-

我做了合并,这就是我现在所拥有的

-A-B-C-D-------H-I-
  \           /
   ------E-F-G

我如何得到这个?

-A-B-C-D-J-

我需要将E,F,G,H,I组合成一个新的提交。

抱歉愚蠢的问题。我正在读人,但无法理解。

2 Ikke:是的。 H是合并提交。 2 Shahbaz:我需要它,因为commit-E上的代码不可构建(不是我的错误=))并且commit-G修复了它。

3 个答案:

答案 0 :(得分:2)

这是迄今为止最快捷的方法:

 # make sure you're on the branch that's at commit I
 git reset --soft <commit-D>
 git commit

reset --soft重置当前分支以指向给定的提交,但保留工作树和索引(暂存区域),这样当您提交时,您将提交那里的所有内容在I,在D作为父级的单个提交中。

(您可以使用其他工具完成此操作,但在这种情况下,这就是您所需要的!)

答案 1 :(得分:0)

答案 2 :(得分:0)

merge --squash 应该足以获得预期的结果。

 git checkout branch_of_D
 git merge --squash branch_of_G

请参阅“In git, what is the difference between merge --squash and rebase?” 例如,使用merge --squash,请参阅“How to use GIT merge --squash?”。