如何削减错误提交[git]

时间:2012-12-03 13:29:05

标签: git git-flow

我正在尝试在我们的开发过程中应用gitflow方法,理论上我喜欢它。但有一点在任何地方都没有涉及......

每个人都将结果推送到develop分支。在计划中,我们有10个问题应该完成并发布到测试版然后再发布到生产中。 10个问题中的2个问题最终没有得到解决,但部分已经处于开发分支中,因为开发人员认为他做得很好,但经过测试后错误又来了。现在决定我们不必等待2个问题得到修复,我们需要进行上传,意味着make release分支并在测试版上进行测试。

在原始的gitflow文章中说:

  

从开发分支新发布分支的关键时刻是   开发(几乎)反映了新版本的理想状态。在   至少所有针对要发布的版本的功能必须   被合并以便在这个时间点发展

但是,如果在develop分支历史记录中我们可以看到不需要合并的情况怎么办?我需要以某种方式切割它们吗?或做其他事情?

感谢。

1 个答案:

答案 0 :(得分:2)

在这种情况下最安全的做法是使用git revert来反转提交。这将创建一个完全撤消相关提交的提交。因此git revert 1234567将在您的分支上创建一个新的提交,以反转具有SHA id 1234567的提交。

关于这样做的几点:

  • 执行git revert后,再次合并分支将不会从恢复的提交中恢复,您必须还原恢复提交。所以在我们的git revert 1234567示例中假设这创建了还原提交09876。现在,您的开发人员已正确实现了他的功能,并且您希望将其合并。要通过恢复删除更改,您现在必须git revert 09876然后合并其更新的分支。
  • 为了让自己更轻松,请按照从最近到最近的顺序恢复提​​交。因此,如果您提交1, 2, 3 1 HEAD git revert 1, git revert 2, git revert 3,则8, 9, 10。然后,如果这些恢复创建提交git help revert以重新引入更改,则将其恢复为大多数到最近的顺序。
  • 还可以恢复合并提交,但这有点复杂,在手册页中对此进行了描述,{{1}}
  • 如果你需要这样做,你应该阅读Linus的this article,他描述了你需要考虑的许多事情。