我可以发送更改git暂存区域进行代码审查(任何代码审查工具)吗?
我了解到git有不同文件状态的概念:1.新建2.修改3.分步4.提交
搜索了很多之后,我发现的是,如果我想发送代码审查到任何工具,我必须对本地资源库进行提交并将其推送到代码审查集中的某个中央资源库(通过任何代码审阅工具,例如Gerrit) 。
现在,假设文件在开始代码审查过程之前处于状态A,并且它经历了10次更多的评论返工,即10次更多的修改,即对本地存储库的10次更多提交,并且最后文件处于状态B,最终应该提交。
从状态A到B,10次提交已完成。
假设这10个,4个提交是在同一部分/文件的一部分。
因此,最后,当我将推荐文件的最终状态B推送到主中央仓库时,我将不得不做10次提交,其中一些中间提交需要返工,即不需要的提交。
但我不想要这些不需要的提交。
从我能想到的情况来看,我对只有一次提交将最终状态B推送到存储库感兴趣。
所以我正在寻找任何这样的方法/工具,它允许git分阶段更改发送审查。 审稿人将审核。 如果他拒绝并提出一些改变,那么我就放弃以前的改变。 应用建议的更改,对这些更改进行分阶段处理,然后再次发送审核。
因此,最后当代码审查接受我会让单一提交我的阶段性变化,并将只需要单一的最终推动。
无法在git存储库中推送未被更改的更改。 然而,你可以使用不同的分支来实现你想要的。 您可以在开发分支上工作,并根据需要进行尽可能多的提交。 您可以将它们推送到远程服务器上的某个开发分支。 审阅者接受更改后,可以将提交合并到主分支中。 如果你愿意,你可以使用git rebase合并提交到一个提交。
git push origin stash@{0}^1:refs/heads/tmp/for-code-review
这将推动你的隐藏指数是可审查的
以下是使用独特创建的独立分支更好的原因:
对我而言,我并不认为我真的需要“说服”任何人使用分支,而是因为每个尝试使用这种(或其他方式)存储的人都会自己发现,正确/更好/更简单的方法是只是使用支行进行工作/代码审查。 又名git branch bugfix/xyz; edit...; git push origin bugfix/xyz;
git branch bugfix/xyz; edit...; git push origin bugfix/xyz;
我相信大多数代码审查工具都会进行差异化处理,所以只需使用'git diff'来生成要审查的代码的适当差异。
至于将你的多个提交合并为一个,好吧,有多种方法可以完成它:
你可能想看看在--squash
选项的--squash
页git merge
。 或者阅读这篇SO文章。
或者,您可以在开发分支上本地执行所有提交,但在合并到mainline之前,请使用git rebase
将它们git rebase
到一起。 有关详细信息,请参阅联机帮助页或阅读此SO文章。
上一篇: Can I send changes of git staged area for code review (to any code review tool)?