我可以同时改变和压缩提交吗?

时间:2010-07-14 22:19:22

标签: git

当我修改了之前提交的一些更改时,我总是连续两次运行rebase。是否可以一步完成此工作流程?假设我有4个新提交。

* (master) D
* C
* B
* A
* Base

我在B中发现了一个错误,所以我创建了一个分支并修复它。

* (master) D
* C
| * (fix) Fix.
|/  
* B
* A
* Base

接下来我运行git rebase --onto fix B D将C和D移到B上。

* (master) D'
* C'
* (fix) Fix.
* B
* A
* Base

最后,我运行git rebase --i fix^^查看最后几次提交,然后将B和Fix压缩到一次提交中。

* (master) D'
* C'
* B'
* A
* Base

是否有更快的方法来完成相同的工作流程?我想合并会更容易,但合并对我来说是因为我正在使用需要线性历史的git svn。

2 个答案:

答案 0 :(得分:5)

当交互式rebase中的提交列表的编辑器出现时,您可以根据自己的喜好添加,删除或重新排序提交。它基本上是一种影响即将发生的樱桃采摘的方式(这就是热轧的结果)。

答案 1 :(得分:3)

您是否了解--squash的{​​{1}}选项?

  

git merge

     

生成工作树和索引状态,就像发生了真正的合并一样(合并信息除外),但实际上没有提交或移动--squash,也没有记录HEAD导致next git commit命令用于创建合并提交。这允许您在当前分支之上创建单个提交,其效果与合并另一个分支相同(或者在章鱼的情况下更多)。