一个简单的例子。我对 Gerrit 进行了更改,这会破坏 CI 构建或审阅者不满意。然后我用另一个提交来修复我的更改。在许多情况下,这是一个小的补丁集,我不想要新的 gerrit 审查,而是作为原始审查中的新补丁集。
我知道这可以通过使用 amend 或 rebase 和 squashin 来实现。
这是唯一的选择吗?我们有点担心必须使用变基和压缩来重写历史。
谢谢,
乔。
这已在 gerrit 邮件列表中进行了讨论:http ://groups.google.com/group/repo-discuss/browse_thread/thread/fc4246f02b77aa9a
git commit --amend
效果很好;这就是我们大部分时间的做法。
Gerrit “补丁”旨在替代正在审查的原始更改,而不是子提交。第二个和后续补丁不是重写历史,它们是当前的替代品。因为历史还没有被书写,所以这样的“修正”是合适的。
重新定位意味着您更改原始作品的血统。修改还会进行新的提交,因此出于法律目的的提交时间戳,但不会更改沿袭。
如果您要让 CI 构建在“集成”分支上并接受不稳定时期,您可以先提交“修复”以供审查,然后“尝试构建”更改提交以保持理智,并且只进行 CI 构建当这些评论合并时。这意味着永远不需要更改历史,但是当您在设计中迭代各种清洁尝试时,您可能会获得更多的历史。
Gerrit/Git 允许重写,因此不太关心出处的开源可以保持更整洁的历史。关心的企业可以使用更准确的历史方法。
值得注意的是,从 2.11 版(2015 年 4 月发布)开始,Gerrit 提供了使用 Web UI 编辑更改的可能性。这个特性在官方文档中有深入的描述。
查看差异时,只需单击编辑按钮:
根据需要编辑文件,然后保存文件。您可以编辑多个文件,然后点击发布编辑以创建新的补丁集。