当我修改了之前提交的一些更改时,我总是连续两次运行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。
答案 0 :(得分:5)
当交互式rebase中的提交列表的编辑器出现时,您可以根据自己的喜好添加,删除或重新排序提交。它基本上是一种影响即将发生的樱桃采摘的方式(这就是热轧的结果)。
答案 1 :(得分:3)
您是否了解--squash
的{{1}}选项?
git merge
生成工作树和索引状态,就像发生了真正的合并一样(合并信息除外),但实际上没有提交或移动
--squash
,也没有记录HEAD
导致next git commit命令用于创建合并提交。这允许您在当前分支之上创建单个提交,其效果与合并另一个分支相同(或者在章鱼的情况下更多)。