正确的方式使用Git / GitHub – PHP系统与开发/testing/生产服务器

我很抱歉,如果这是明显的或容易的,我已经看了很多的git / github教程和阅读其他文章,但我想确保我在做什么是正确的。

我想将VC(出于显而易见的原因)融入到我的开发团队和stream程中。

目前的开发过程(使用Dreamweaver):
*收到一张票(或工单)
*在开发服务器上下载文件
*更改文件
*上传文件到开发服务器
*更改testing/validation
*发送到生产服务器


我试图弄清楚如何使用Git来开发新的开发stream程。

我正在切换到PHPStorm(这是一个与Git直接集成的实际PHP IDE)。

会是这样的吗?

  • 收到一张票(或工作单)
  • 结帐/更新/下载文件
  • 更改文件
  • 上传文件(我认为也是当前的工作目录…?)
  • 在一天结束时,做一个提交
  • 有构build脚本发送数据到testing服务器(每晚构build)

或者做更好的做法

  • 收到一张票(或工作单)
  • 结帐/更新/下载文件
  • 更改文件
  • 上传文件/提交
  • 有构build脚本发送数据到testing服务器(每晚构build)

还是有另一种方式? 理解什么是最佳stream程有点麻烦?

任何帮助将不胜感激。


编辑

我想看看是否最好在本地(每个开发人员)有一个服务器版本,如果是的话,如果你有7个左右的分支,这是如何工作?

如果不是的话,你如何在网上处理7个左右的分支? 你FTP文件或使用Git钩子,使他们自动更新?

2012年7月26日更新

在使用Git成功一段时间之后,我一直在关注这个分支模型,并取得了巨大的成功: 一个成功的Git分支模型

上面的答案是肯定的 – 应该肯定有本地版本的服务器。

假设你有一个活的服务器和一个开发服务器,我会沿着这些线做一些事情。

在开始一个开发周期之前,我至less会有两个分支:

  1. Master – 开发服务器在这个分支上运行
  2. 稳定 – 活动的服务器在这个分支上运行。

因此,如果开发者获得一张票或一份工作单,他/她将执行以下操作:

  1. git拉来源高手
  2. git分支featureBranch(被命名为ticket ID或作为工单的一个很好的描述)
  3. git结账function分支
  4. 做出改变,完成预期的改变。 尽可能经常提交。 这样做是因为你将创造有价值的历史。 例如,你可以尝试一个方法来解决问题,如果不行,就放弃它。 如果一天之后你看到光线,想要重新应用解决scheme,这是在你的历史!
  5. 当function完全开发和本地testing时,结帐主。
  6. 混帐function分支
  7. git推送起源大师
  8. 在开发服务器上testing推送的更改。 这是运行你能想到的每一个testing的时刻。
  9. 如果一切正在解决,合并function或修复稳定的分支。 现在这个变化是为你的客户而生的。

在服务器上获取代码

服务器的更新不应该是一个问题。 基本上我会像开发人员一样将其设置为用户。 在我的公司,我们已经将服务器设置为只读用户。 基本上这意味着服务器不能推动任何东西,但总是可以拉动。 设置这个不是微不足道的,所以你可以build立一个简单的web界面,只允许一个git拉。 如果你可以让你的开发人员在现场执行的东西,你是安全的:)

[编辑]

针对这个反应的评论中提出的最后一个问题:

我不知道我是否正确地理解了你的问题,但是基本上(简化了一下),我就是这么做的,是我在你的鞋子里。 示例设置

testing机器(或作为testing实现的webroot)具有基于git仓库的源代码,其中主分支签出。 在创build这个仓库的时候,你甚至可以删除所有其他分支的所有引用,所以你可以确定没有可以在这个仓库中检出一个错误的分支。 所以基本上testing机器有一个只有一个主分支被检出的Git仓库。

对于现场服务器,我会做同样的事情,但这次检查稳定的分支。 开发人员应该有一个本地存储库克隆所有分支存在。 还有你们build立的软件的本地实现。 这个软件从本地的git仓库获取它的源代码。 换句话说:从此存储库中当前检出的分支中。

实际编码

当需要新function时,可以根据当前主设备制作本地function分支。 当分支检出时,开发人员可以在本地进行更改(因为软件现在正在特性分支的源上运行)。

如果一切似乎都是按顺序进行的,那么这些更改将从function分支合并到主控并推送到您的“git机器”。 “你的github”可以这么说。 testing现在可以把这些变化吸引到每一个必要的testing中去。 如果他们决定一切正常,开发人员可以将主从更改合并到稳定并再次推送。

现在剩下的就是拉动你的活动机器。