我可以发送更改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

这将推动你的隐藏指数是可审查的

  • 用其他人可以访问的任何遥控器替换“原点”
  • 将“@ {0}”替换为您希望审查的任何隐藏号码
  • 如果您希望查看您的隐藏文件系统更改,请删除“^ 1”部分。
  • 如果您希望查看隐藏的索引和隐藏的文件系统,则先推荐索引(使用^ 1),然后推索引,然后使用非索引(no ^ 1)。

  • 以下是使用独特创建的独立分支更好的原因:

  • 假设你会在代码审查通过的时候将你的修改合并到某个地方。 你不能将stash嵌入任何东西。
  • 父亲的历史是丑陋的。 你的两个存储提交共享同一个父代。 “在制品”在技术上是一个合并承诺,但这并不能真正表明发生了什么事情。
  • 提交消息是不好的。
  • 通过分支机构,您可以根据代码审查的反馈实际更改代码 - 这是进行代码审查的全部要点。 你可以添加更多的提交,删除提交,rebase,压扁等,你不能用stashes来做到这一点。 (或rebase等)
  • 对我而言,我并不认为我真的需要“说服”任何人使用分支,而是因为每个尝试使用这种(或其他方式)存储的人都会自己发现,正确/更好/更简单的方法是只是使用支行进行工作/代码审查。 又名git branch bugfix/xyz; edit...; git push origin bugfix/xyz; git branch bugfix/xyz; edit...; git push origin bugfix/xyz;


    我相信大多数代码审查工具都会进行差异化处理,所以只需使用'git diff'来生成要审查的代码的适当差异。

    至于将你的多个提交合并为一个,好吧,有多种方法可以完成它:

  • 你可能想看看在--squash选项的--squashgit merge 。 或者阅读这篇SO文章。

  • 或者,您可以在开发分支上本地执行所有提交,但在合并到mainline之前,请使用git rebase将它们git rebase到一起。 有关详细信息,请参阅联机帮助页或阅读此SO文章。

  • 链接地址: http://www.djcxy.com/p/26091.html

    上一篇: Can I send changes of git staged area for code review (to any code review tool)?

    下一篇: How to clean up my git repositories