3

背景
GitHub 属于客户端。我们团队中有一些新手,他们有时会错过基本的命名约定和其他编码协议。因此,如果任何高级人员想要在内部进行审查,除了创建 PR 之外别无他法。但是这个 PR 对客户也是可见的。

问题:我们是否可以使用一个工具(如果 GitHub 有一个功能更好)进行内部审查,然后创建一个干净漂亮的 PR?

我理解 PR 本身意味着它是出于审查目的,但至少在内部审查之后,它会有真正的问题需要调查,而不是一些琐碎/明显的问题。

4

1 回答 1

2

你可以有一个永远不会推送到远程 (GitHub) 的新手分支(我们称之为它dev1)和一个dev2被推送以创建 PR 的开发分支(我们称之为它)。

初级开发人员会写信给dev1.

高级开发人员不会在审查过程中使用 PR,而是dev1dev2合并dev1dev2.

称呼他们dev1dev2(或类似的)创建一个两步过程,不会让任何人觉得他们被视为孩子。

如果您不希望所有混乱的提交dev1都显示在最终将被合并到(并推送到 GitHub)的历史记录中,一旦您对看起来dev2很满意,您可以使用“git reset squashing”:“ Git 书本页dev1末尾附近的 Squashing”段落给出了一个很好的例子。

事情是这样的:

首先,您将 HEAD 移回您满意的最后一次提交(大概是 and 之间的最后一次常见提交dev1dev2

git reset --soft <hash>

然后你运行:

git commit

这样一来,您就可以从anddev1之间的最后一次常见提交直接跳回到您满意的最后一点,“挤压”所有那些中间混乱的提交。dev1dev2

在此工作流程中,您可以在查看时进行并排比较dev1(通过将dev2其与您推送到 GitHub 以创建 PR。dev1dev2git resetdev2

在流程结束时,您的客户只会看到存在真正问题的干净版本,并且只需要查看重要的内容。

当然,这需要团队中的每个人都可以独立于 GitHub 访问项目(例如,通过服务器上的内部远程或类似方式)。因此,此选项在您的特定设置中可能不实用。

如果内部远程不实用,您可以按照@choroba 的建议,通过 GitHub 上的私有克隆实现类似的工作流程。

无论哪种方式,关键要素是:

  1. 对您的客户隐藏一个分支(在项目本身的克隆或分叉中)
  2. 在提交 PR 之前压缩所有杂乱的提交,这样您的客户就不会被杂乱的历史分散注意力,其中充满了没有真正意义的更改
于 2020-10-12T19:33:18.600 回答