背景:
GitHub 属于客户端。我们团队中有一些新手,他们有时会错过基本的命名约定和其他编码协议。因此,如果任何高级人员想要在内部进行审查,除了创建 PR 之外别无他法。但是这个 PR 对客户也是可见的。
问题:我们是否可以使用一个工具(如果 GitHub 有一个功能更好)进行内部审查,然后创建一个干净漂亮的 PR?
我理解 PR 本身意味着它是出于审查目的,但至少在内部审查之后,它会有真正的问题需要调查,而不是一些琐碎/明显的问题。
背景:
GitHub 属于客户端。我们团队中有一些新手,他们有时会错过基本的命名约定和其他编码协议。因此,如果任何高级人员想要在内部进行审查,除了创建 PR 之外别无他法。但是这个 PR 对客户也是可见的。
问题:我们是否可以使用一个工具(如果 GitHub 有一个功能更好)进行内部审查,然后创建一个干净漂亮的 PR?
我理解 PR 本身意味着它是出于审查目的,但至少在内部审查之后,它会有真正的问题需要调查,而不是一些琐碎/明显的问题。
你可以有一个永远不会推送到远程 (GitHub) 的新手分支(我们称之为它dev1
)和一个dev2
被推送以创建 PR 的开发分支(我们称之为它)。
初级开发人员会写信给dev1
.
高级开发人员不会在审查过程中使用 PR,而是dev1
在dev2
合并dev1
到dev2
.
称呼他们dev1
和dev2
(或类似的)创建一个两步过程,不会让任何人觉得他们被视为孩子。
如果您不希望所有混乱的提交dev1
都显示在最终将被合并到(并推送到 GitHub)的历史记录中,一旦您对看起来dev2
很满意,您可以使用“git reset squashing”:“ Git 书本页dev1
末尾附近的 Squashing”段落给出了一个很好的例子。
事情是这样的:
首先,您将 HEAD 移回您满意的最后一次提交(大概是 and 之间的最后一次常见提交dev1
)dev2
:
git reset --soft <hash>
然后你运行:
git commit
这样一来,您就可以从anddev1
之间的最后一次常见提交直接跳回到您满意的最后一点,“挤压”所有那些中间混乱的提交。dev1
dev2
在此工作流程中,您可以在查看时进行并排比较dev1
(通过将dev2
其与您推送到 GitHub 以创建 PR。dev1
dev2
git reset
dev2
在流程结束时,您的客户只会看到存在真正问题的干净版本,并且只需要查看重要的内容。
当然,这需要团队中的每个人都可以独立于 GitHub 访问项目(例如,通过服务器上的内部远程或类似方式)。因此,此选项在您的特定设置中可能不实用。
如果内部远程不实用,您可以按照@choroba 的建议,通过 GitHub 上的私有克隆实现类似的工作流程。
无论哪种方式,关键要素是: