我有一个包含两个分支的git存储库master
和amazing_new_feature
。后一个分支包含了一项令人惊叹的新功能。一位同事和我都在同一个存储库上工作,我们两个人都同意这两个分支。
现在完成了令人惊奇的新功能的工作,并在amazing_new_feature
分支中累积了超过100个提交。在将工作合并到master之前,我想稍微清理一下这些提交(使用git rebase -i
)。
我们面临的问题是,一次性重写/重新排序所有100次提交真是太痛苦了。相反,我想做的是:
amazing_new_feature
分支中的前几个提交,并将结果放入一个专用分支,其中包含“已清理”的历史记录(例如,amazing_new_feature_ready_for_merge
分支)。amazing_new_feature
分支上的剩余amazing_new_feature_ready_for_merge
分支。我的想法是,在某些时候,amazing_new_feature
的所有工作都应该在amazing_new_feature_ready_for_merge
中,然后我可以将后者合并到master
。
这是一种明智的方法,还是有更好/更容易/更傻瓜式的解决方案来解决这个问题?我特别害怕上述算法的第二步,因为它意味着重新定位已发布的分支。 IIRC这是一件危险的事情。
答案 0 :(得分:0)
如何重写已发布的git分支的历史记录?
通常你不能,特别是如果那个分支广泛分布的话 如果您只是两个开发人员拉/推分支,您可以同意修改它,然后其他开发人员可以重置他/她的本地分支以引用他/她刚刚提取的远程分支(如此SO answer)
在这种情况下(限制发行),您在问题中描述的步骤是合理的。