我正在与一个不熟悉 git 的开发人员合作,我想设置一个 git 工作流程,让我可以审核该开发人员所做的提交(并可能拒绝它们),而不会强迫他重新调整他的工作(这很容易出错对于新用户)。
这是场景:
- 该
master
分支仅包含经过审核的代码 devel
分支是通过分叉master
分支创建的- 开发人员正在
devel
分支上工作并推送他的代码供我审核 - 我发现他的代码存在一些问题,所以我要求他在
devel
分支上进行更多提交以解决问题 - 一旦我对代码感到满意,我就会挑选(或与 squash 合并)开发人员在
master
分支上提交,添加我自己的评论并将提交标记为由开发人员编写 - 开发人员将分支合并回
master
他的devel
分支
这是此场景的可视化说明:
在这个序列之后,当开发人员在其他一些提交后再次推送他的分支时,我怎么能100% 确定开发人员在“犯错误/重做”序列中犯的错误不会再次出现?devel
最好的解决方案是要求开发人员将他的devel
分支重新设置为基础master
,但这对于新的 git 用户来说是一项艰巨的任务。
如果此工作流程有任何错误,请建议我另一个可以在将提交合并到主分支之前审核提交的地方。
编辑
一位朋友向我推荐了一个看起来很有希望的方向:提交时的--fixup 选项。
--fixup=<commit>
构造一个提交消息以用于
rebase --autosquash
. 提交消息将是来自指定提交的主题行,前缀为“fixup!”。有关详细信息,请参阅git-rebase。
开发人员可以使用此选项将他的第二次和第三次提交正确标记为对其第一次提交的修复。一个很好的解决方案来探索......