【问题标题】:Combine few commits. Git rebase合并少量提交。 Git 变基
【发布时间】:2011-12-13 15:21:30
【问题描述】:

我有这个

-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 伊克:是的。 H 是合并提交。 2 Shahbaz:我需要它,因为 commit-E 上的代码不可构建(不是我的错误 =))并且 commit-G 修复了它。

【问题讨论】:

  • H 不仅仅是合并提交吗?
  • 没有帮助给你答案,但你为什么真的想要更少的提交?它只会让您更难撤消不需要的更改。如果您编写好的提交消息,实际上更多的提交应该是更可取的
  • @Shahbaz:或者这些是微小的增量提交(这是非常好的做法),确实应该在发布之前合并!

标签: git merge tags rebase


【解决方案1】:

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

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

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

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

【讨论】:

【解决方案2】:

【讨论】:

    【解决方案3】:

    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?”。

    【讨论】:

    • 这不会让你和我在那里 - 你必须压缩合并该分支,然后交互式 rebase 将两个压缩合并提交压缩在一起。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 2011-06-23
    • 2013-06-20
    • 2018-07-15
    相关资源
    最近更新 更多