Git:测试提交而不推送

Git:测试提交而不推送,git,Git,我们有两个独立的团队在开发同一个产品:设计和验证。 Designer添加了一些特性,运行一个简单的测试来检查设计是否编译,以及一个非常基本的测试是否正在运行,并且需要将它传递给验证团队。 我的问题和担忧是:设计器如何在不将提交推送到服务器的情况下轻松安全地传递提交?否则,这可能是一个非常漫长的历史,我想避免。 如果设计器可以与验证团队合作,而无需将更改推送到服务器,那么所有这些提交都可以压缩为一个提交,然后推送。您绝对不必使用git限制提交。这不是它的目的。其中一个最佳实践是。如果您想在存储库中

我们有两个独立的团队在开发同一个产品:设计和验证。 Designer添加了一些特性,运行一个简单的测试来检查设计是否编译,以及一个非常基本的测试是否正在运行,并且需要将它传递给验证团队。 我的问题和担忧是:设计器如何在不将提交推送到服务器的情况下轻松安全地传递提交?否则,这可能是一个非常漫长的历史,我想避免。
如果设计器可以与验证团队合作,而无需将更改推送到服务器,那么所有这些提交都可以压缩为一个提交,然后推送。

您绝对不必使用
git
限制
提交。这不是它的目的。其中一个最佳实践是。如果您想在存储库中获得某种顺序,则必须使用
分支

在您的情况下,您可以有一个
分支
用于设计功能,当该功能完成时,设计团队可以运行测试并关闭
分支
。这样,验证团队将看到一个特性被合并,然后将对其进行验证


有一个非常好的扩展
git
,它使这项工作变得更容易,也许这就是您真正想要的。

如果有正当的理由希望在不推送到中央服务器的情况下传递提交,您可以研究,它允许您打包一个或多个提交并直接作为单个文件发送

编辑:如果OP真的想避免重写历史记录(即使在单独的分支上)和额外提交,一个可能的解决方案(通常不推荐)是根本不创建提交,只需传递补丁文件即可

  • 开发人员进行他们想要的任何更改,然后运行
    git diff>MyChange.patch
    。他将此电邮给QA
  • QA检查与开发人员相同的提交,并运行
    patch-p1
    。QA现在具有与开发人员相同的状态,没有创建任何git提交
  • 无需将它们推送到服务器

    使用Git,您不必将自己限制在“一个”服务器上

    您可以将另一台服务器添加为远程服务器,专用于QA测试,设计师可以在其中推送。
    然后,post接收挂钩可以:

    • 通过一些测试
    • 如果这些测试失败,则拒绝(重置)刚刚推送的提交
    • 或者,如果这些测试通过,则将相同的提交推送到实际服务器
    换句话说,QA服务器充当设计器提交和实际服务器之间的网关


    另一种方法是将这些提交推送到(一个)服务器,但在一个专用分支中,由验证团队合并以掌握测试通过。

    查看分支。在两个团队之间的同一个分支上工作,然后在合并到master时挤压。有一个非常简单的规则:要测试提交,您必须具有该提交。谁在做测试?他(或她或它)必须有承诺。因此,开发人员和测试人员之间必须有某种通信渠道。这不一定是“服务器”,任何人都可以是服务器,只有一个“服务器”,如果你说“那台服务器在那里,那就是服务器”。(而且:分支名称不重要,只重要。对于推/拉,您确实需要附加一些名称,当然,至少暂时是这样。)我想通过设计和QA之间的迭代消除历史污染。我同意。但是我不希望历史在设计和QA之间有太多的迭代。它不是和推/拉一样,但是没有服务器吗?如果我以后挤压提交,QA将无法再使用他们的工作区。@Michael,我要明确一点,您是否知道,如果您与QA有一个共享分支,例如
    test
    ,那么他们总是可以在挤压后执行
    git重置--硬源代码/测试
    ,以使其历史与您的历史相匹配?在发出这样的命令后,他们将能够再次使用他们的工作区。但所有这些提交仍然在历史记录中可见。“我不能压扁它们。@Michael post receive钩子可以在专用分支(如果测试通过)上为您压扁它们(如果您愿意:该钩子是一个脚本:您可以让它做任何您需要的事情),并为您推送它。”。