底垫,同时维修器材合并历史
问题描述:
的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
结构消失,我留下一个线性提交序列。
重新创建它并不是世界的尽头,但是有没有一种方法可以在不丢失结构的情况下重新绑定?
答
加成@Francesco 你也可以看出来的混帐拉--rebase许多开发人员使用。它也使历史变得平坦。避免的方法是通过执行获取/手动重订即(即在主站)
git fetch
git rebase --preserve-merges origin/master
+0
感谢您指出这一点。事实上,我已经每次都这样做,因为我喜欢手动控制这些步骤,但我确信其他使用'pull --rebase'的人会发现这个有用的:) – Brondahl
尝试'-p'或'--preserve-merges'。 – ElpieKay