底垫,同时维修器材合并历史

底垫,同时维修器材合并历史

问题描述:

git的工作流程,我最喜欢的是rebase一切承诺master之前,还要利用git merge --no-ff创建这些数据块中有工作的可读,可识别大块历史和细节工作的。底垫,同时维修器材合并历史

使用--no-ff给出了一个历史,看起来有点像这样:

| 
|\ 
| \ 
| |FeatureA.InterestingStep1 
| |FeatureA.InterestingStep2 
| |FeatureA.InterestingStep3 
| |FeatureA.InterestingStep4 
| |FeatureA.InterestingStep5 
|/
|/ 
|FeatureA 
|\ 
| \ 
| |FeatureB.InterestingStep1 
| |FeatureB.InterestingStep2 
| |FeatureB.InterestingStep3 
|/
|/ 
|FeatureB 

这是所有罚款。

有什么可耻的是,如果我试图重新设计这个,那么我就失去了结构。

假设我完成了我的工作,获取,重新设置,清理了合并冲突,清理了我本地凌乱的提交历史,作为我想要的(还是多个)最终提交,并构建了必需的--no-ff结构。

然后我推,但队里的其他人打了我的拳头和起源\主已移动。 如果我rebase,然后-no-ff结构消失,我留下一个线性提交序列。

重新创建它并不是世界的尽头,但是有没有一种方法可以在不丢失结构的情况下重新绑定?

+0

尝试'-p'或'--preserve-merges'。 – ElpieKay

你想要的是一个rebase蜜饯合并提交的-p(或--preserve-merges)选项

doc

重新创建合并提交的,而不是扁平的历史通过重放 犯了合并提交介绍。不会保留合并冲突解决方案或 手动修改合并提交。

+0

完美,谢谢。 – Brondahl

加成@Francesco 你也可以看出来的混帐拉--rebase许多开发人员使用。它也使历史变得平坦。避免的方法是通过执行获取/手动重订即(即在主站)

git fetch

git rebase --preserve-merges origin/master

+0

感谢您指出这一点。事实上,我已经每次都这样做,因为我喜欢手动控制这些步骤,但我确信其他使用'pull --rebase'的人会发现这个有用的:) – Brondahl