【问题标题】:Merge hundreds of commits for one implementation on master [duplicate]在master上合并数百个提交以实现一个实现[重复]
【发布时间】:2018-09-27 13:31:32
【问题描述】:

为了实现一项新功能,我从 master 创建了一个新分支 xyz
我现在已经完成了数百次提交。将xyz 合并到master 的更好策略是什么?我应该将提交保持原样,还是应该将它们压缩到一个提交中以表示最终实现(之后我可以导航它们吗?)?
我应该习惯于压缩相关的小提交吗?

【问题讨论】:

标签: git


【解决方案1】:

问题在于,这相当于说如果我知道我会做 a、b、c、d,但这里每件事都混合在一起。

因此,您可以尝试执行这些巧妙的步骤,但它们会要求您重做大部分工作(具有参考终点)。

创建一个新的分支并逐步报告项目。

你可以尝试这样的拆分:

  • 重构为 xxx 做准备
  • 添加功能 xxx
  • 为功能 xxx 添加测试

这个想法是,如果有人必须挑选/重用您的代码,这更容易理解(当然,如果您可以拥有多个功能/子功能,那就更好了),但要确保每个步骤都正确构建/测试。

【讨论】:

  • 我正在阅读这篇文章:internalpointers.com/post/squash-commits-into-one-git 基本上他们会将最后的 X 次提交合并到一个提交中。是否可以将相同的操作应用于“中间”的提交?
  • 使用 rebase -i 你可以在中间压缩提交是的。
  • 使用“rebase -i ”你可以在中间压缩提交是的(你也可以移动它们等)但这不会创建智能提交(我的观点)。但是在这里,我建议让您当前的分支保持平静(它可以工作,我称之为 dev-branch 之后)创建一个新分支(称为干净分支)根据它们所代表的工作类型修改报告(准备/开发/测试) ,通过从您的 dev-branch 创建新提交中签出来做到这一点。
  • 谢谢!我实际上正在使用交互式 rebase,使用 -f 来重写历史记录,因为到目前为止我是该分支的唯一维护者。至少我可以缓解
  • @LppEdd 好的,但请创建一个新分支来执行此操作(在您的 dev-barnch 的头部),这样您就可以在重新处理所有历史记录后保持参考端点的含义,如果它不起作用的话可以与 dev-branch 进行比较。
猜你喜欢
  • 2019-03-31
  • 1970-01-01
  • 2020-05-03
  • 2012-05-27
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多