Git生产/暂存服务器工作流程

111

我现在的网站(生产服务器)已经有很多代码了。现在,我想开始在我的项目中使用Git,并为我的团队设置一个暂存服务器。有人能给我一些建议吗?

这是我脑海中的画面:

        Production        - Production server which already have codes
            ↑             
         Staging          - New staging server, will install Trac too
         ↗↙ ↖↘          
  Developer1  Developer2  - Local development 

我的问题是,我应该从哪里开始?

以下是我想到的一些步骤:

  1. 在生产服务器上执行git init(这样做安全吗?)
  2. 将repo从生产服务器克隆到staging服务器
  3. 开发者从staging服务器将repo克隆到本地机器
  4. 完成更改后,在staging服务器上push文件
  5. 当staging准备好时,将所有东西push到生产环境中

这个工作流程是否合理?还有更好的方法吗?

如果我只想更改一个文件怎么办?

在这个过程中,origin/master是否有任何关联?谁是origin?我会不会最终拥有多个origins?

此外,开发人员在什么情况下应该使用branch

2个回答

59

这是一个更好的答案。我对Git分支的概念不是很熟悉。 - kayue
@bUg,你有没有一些资源的链接可以更详细地解释“develop分支->推送到staging系统”和“master分支->推送到生产服务器”的过程?尽管这篇绝妙的文章《成功的Git分支模型》提到了分支和版本控制的很好的概念,但它并没有提到这一部分。 - ILCAI

19
你的建议看起来还不错,但我不会让开发人员直接推送到暂存服务器。相反,一个"集成者"应该仔细审查分支,并将它们合并到主分支中(如果你使用git flow模型,则合并到开发分支中,如bUg所建议的那样)。同一人将推送到暂存服务器。
* "集成者": "在团队项目中担任相当核心角色的人接收其他人所做的更改,审查和整合它们,并将结果发布供他人使用..."

1. 在生产服务器上执行git init(这样做安全吗?)

是的,但你必须在该repo上设置非常严格的权限。如果我还没有它,我可能会先使用curl将整个网站复制到本地磁盘。

2. 从生产服务器克隆repo到staging服务器

您应该有一个与生产和staging服务器分开的“中央”repo。那个可以根据需要进行克隆和推送。

3. 开发人员从staging克隆repo到他们的本地机器

4. 完成更改后将文件推送到staging服务器

5. 当staging准备好时,将所有内容推送到生产环境

将“staging”替换为“central”,我认为你就没问题了,但更大的问题是如何处理分支和合并,正如bUg所指出的那样。


11
为了在生产环境中让Git仓库更加安全,请确保添加一个包含"Deny All"的.htaccess文件。 - kayue
2
2:Felixyz的“Central”仓库是指裸仓库。使用--bare命令创建一个裸仓库。 - kayue
1
@keyue 1:更好的方法是,在你的生产*.htaccess文件中添加RedirectMatch 404 /\.git,以保护你的.gitignore.gitattributes.git*文件夹。 - Leo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接