Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以将git暂存区的更改发送给代码审查(任何代码审查工具)吗?_Git_Git Commit - Fatal编程技术网

我可以将git暂存区的更改发送给代码审查(任何代码审查工具)吗?

我可以将git暂存区的更改发送给代码审查(任何代码审查工具)吗?,git,git-commit,Git,Git Commit,我了解到git有不同文件状态的概念: 1.新的 2.被改进的 3.上演 4.承诺的 在搜索了很多之后,我发现如果我想发送代码审查到任何工具,我必须提交到本地存储库,并将其推送到某个中央回购集进行代码审查(通过任何代码审查工具,例如Gerrit) 现在,假设文件在开始代码评审过程之前处于状态A,并且它又经历了10次评审和返工,即10次修改,即10次提交到本地存储库,最后文件处于状态B,应该最终提交 从状态A到状态B完成了10次提交 假设这10次提交中有4次提交在文件的同一节/部分上 所以,最后,当

我了解到git有不同文件状态的概念: 1.新的 2.被改进的 3.上演 4.承诺的

在搜索了很多之后,我发现如果我想发送代码审查到任何工具,我必须提交到本地存储库,并将其推送到某个中央回购集进行代码审查(通过任何代码审查工具,例如Gerrit)

现在,假设文件在开始代码评审过程之前处于状态A,并且它又经历了10次评审和返工,即10次修改,即10次提交到本地存储库,最后文件处于状态B,应该最终提交

从状态A到状态B完成了10次提交

假设这10次提交中有4次提交在文件的同一节/部分上

所以,最后,当我将审查和接受文件的最终状态B推送到主中央存储库时,我必须进行10次提交,其中一些中间提交需要返工,即不需要的提交

但我不想要那些不想要的承诺

从我所能想到的是,我对最终状态B感兴趣,它只需要一次提交就可以推送到存储库

因此,我正在寻找任何这样的方法/工具,允许git阶段的更改被发送以供审查。评审员将进行评审。如果他拒绝并提出一些更改,那么我将取消之前的更改。应用建议的更改,阶段化这些更改,然后再次发送以供审阅


因此,最后,当代码被审阅时,我将执行一次提交我的阶段性更改,并且只需要一次最终推送。

在git存储库中推送未受限制的更改是不可能的。 然而,您可以使用不同的分支来实现您想要的。 您可以在开发分支上工作,并根据需要进行任意多的提交。 您可以将它们推送到远程服务器上的某个开发分支。 在审阅者接受更改后,您可以将提交合并到主分支中。
如果需要,可以使用git rebase将提交转换为单个提交

我相信大多数代码审查工具都会有差异,所以只需使用“git diff”就可以生成待审查代码的适当差异

至于将多个提交合并为一个,有多种方法:

  • 您可能需要查看
    --squash
    选项以
    git merge
    。或者读一篇这样的文章

  • 或者,您可以在dev分支上本地执行所有您想要的提交,但在合并到主线之前,请使用
    git-rebase
    将它们压缩在一起。有关详细信息,请参阅或阅读SO文章

  • 这将推动你的隐藏索引被审查

    • 将“origin”替换为其他人可以访问的任何远程设备
    • 将“@{0}”替换为所需的任何存储编号
    • 如果要查看隐藏的文件系统更改,请删除“^1”部分
    • 如果您希望同时查看您的隐藏索引和隐藏文件系统,那么首先推送索引(使用^1),然后推送非索引(否^1)

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

    • 如果代码审查通过,您可能会在某个地方合并您的更改。你不能把藏书合并成任何东西。
      • 家长的历史很糟糕。您的两个隐藏提交都共享同一个父级。从技术上讲,“WIP”是一个合并提交,但这并不能真正说明发生了什么
      • 提交消息不正确
    • 通过分支,您实际上可以根据代码评审的反馈更改代码——这就是代码评审的全部意义。您可以添加更多的提交、删除提交、重设基址、挤压等,但不能使用隐藏。(或重新设置基础等)

    对我来说,我并不觉得我真的需要“说服”任何人使用分支,因为每个尝试使用这种(或其他方式)隐藏的人都会发现,正确/更好/更简单的方法是只使用分支进行工作/代码审查。aka
    git分支错误修复/xyz;编辑git-push-origin错误修复/xyz

    这是一种聪明的方法来推动隐藏-但我强烈同意使用临时分支的建议。:)这有用吗?
    git push origin stash@{0}^1:refs/heads/tmp/for-code-review