如何向git添加公共测试分支?

如何向git添加公共测试分支?,git,Git,我们有一个远程主分支的回购协议。Devs将创建一个以票证号命名的新本地分支,以便在现有文件夹中执行某些工作。当我们完成时,我们只需进入大师级。大多数情况下,我们只有一个人在做一些事情,但我们又增加了几个人,现在我们想建立一个通用的测试分支,让我们在升级到Master之前签入代码供同行评审。我不清楚我们需要做些什么来改变我们的工作流程。我们是从克隆主机到测试开始的吗?或者只是在Master和我们的本地回购协议之间增加一个拉力?那么回到过去,我们如何管理同行评审测试和可能的更新 我应该补充一点,我们

我们有一个远程主分支的回购协议。Devs将创建一个以票证号命名的新本地分支,以便在现有文件夹中执行某些工作。当我们完成时,我们只需进入大师级。大多数情况下,我们只有一个人在做一些事情,但我们又增加了几个人,现在我们想建立一个通用的测试分支,让我们在升级到Master之前签入代码供同行评审。我不清楚我们需要做些什么来改变我们的工作流程。我们是从克隆主机到测试开始的吗?或者只是在Master和我们的本地回购协议之间增加一个拉力?那么回到过去,我们如何管理同行评审测试和可能的更新

我应该补充一点,我们已经设置好了一些东西,所以我们在根文件夹中有一个repo,在它下面有数百个单独的项目在它们自己的文件夹中,而不是每个项目都有单独的repo

首先,我们需要解决很多安全问题(HIPAA、PCI等),因此我们有自己的内部托管git服务器。我们的每个虚拟机和笔记本电脑都通过VPN连接到它。我们在那台服务器上有主机的本地克隆

我觉得我们的过程有点奇怪,但事实就是这样:

当我们拿到工作票时,我们会这样做:

  • git开关或签出
  • git pull origin master--确保所有内容都是最新的
  • 完成工作并进行测试
  • 向分支添加并提交我们的更改
完成后,我们会这样做:

  • 获取开关(如果需要)
  • git拉原始主机--只是为了确保
  • git状态——检查已修改的内容
  • git签出主机
  • 吉特拉力
  • git合并
  • git推送源主机
这是一个已经实施了十年左右的过程,我被告知要遵循它

从历史上讲。。。这个地方的票几乎都是由一个人处理的。他们过去使用集中式SCM(TFS),因此他们可以从服务器签出所需的文件,进行更改、测试,然后签入。我认为他们建立这个git流程是为了保留该流程的整体风格。(我知道这是不明智的,但同样,这件事早在我来这里工作之前就已经完成了。)

大多数情况下,代码是在生产中考虑的。我们将提交一个票证,我们将对它做一些工作,测试它,然后将它推回到master,然后投入生产

有时我们会创建新项目。在这些情况下,我们添加一个新文件夹,添加代码(通常通过复制类似项目中的代码),使其工作,然后将其推送到master,然后再推送到生产环境中


我们想要的是允许多个开发人员在将项目推向主控和生产之前,审查和测试对项目所做的更改。现在,我们不能这么做。文件可以是dev的本地文件,也可以在master中全局访问。如果它在master中,那么它就在生产中,反之亦然。

如果您有一个测试分支用于多个开发人员,那么每个人都将他们的工作混合在一起。你怎么知道你在测试什么?如果有问题,您如何知道多个未经测试的更改中的哪一个导致了问题?您可以通过一次测试一个更改来避免这种情况。但是一个测试分支会造成瓶颈

您需要单独和并行地测试分支。每次更改都有一个测试分支。你有它们

Devs将创建一个以票证号命名的新本地分支,以便在现有文件夹中执行某些工作

这是一个“特征分支”。当开发人员准备好对其工作进行审查和测试时,他们会将其功能分支推向上游。然后人们检查和测试特性分支。一旦它通过,它就被合并到master中。然后删除特征分支。这是大多数Git项目所使用的方法

您的流程有80%。您的票务分支是功能分支。唯一的改变是在合并之前推送和检查它们

  • git交换机
  • git pull原始主机--更新您的分支
  • git push--推动您的分支进行审查
  • 检查分支,解决任何问题
  • git交换机主机
  • 吉特拉力
  • git合并
  • git推送
  • git分支-d——删除本地分支
  • git push origin:--删除远程分支
当its与Git服务(例如,它将管理和标准化审查、测试和合并)相结合时,这就容易多了。Gitlab可以作为付费服务使用,也可以免费自托管

。例如,合并维护多个发布。它们都基于功能分支工作流。每期发行一个分支。测试一下。合并它。删除它

我应该补充一点,我们已经设置好了一些东西,所以我们在根文件夹中有一个repo,在它下面有数百个单独的项目在它们自己的文件夹中,而不是每个项目都有单独的repo

这将使事情变得非常复杂。这将使分支和合并变得复杂。它扩大了存储库的规模,使克隆变得昂贵。这使得确定哪个项目的提交、分支或标记变得困难。它使合并变得更加复杂,一个简单的合并来更新分支可能会拖入数百个不相关的更改

每个项目都应该有自己的存储库。如果它们相互依赖,请使用适合您的语言的依赖关系管理器。有。

考虑使用。
这是经过深思熟虑、众所周知、有据可查的。
很多人使用它,你可以很容易地找到这种方法的优点/缺点。
顺便说一下,Git Flow有几个版本。我想我已经链接了可能是最知名的版本,但是有一些“更新”或“扩展”添加了更多的路径/概念,例如-添加脚本以安装到git中,因此您可以使用新命令,如
git hotfix start/git hotfix end
,自动执行大量分支/合并