【问题标题】:Managing staging and production servers using git使用 git 管理登台和生产服务器
【发布时间】:2015-01-19 11:06:00
【问题描述】:

我刚开始在一个网站上工作,这个网站是我从使用 SVN 管理代码的人那里继承而来的,我想将其切换为使用 Git。

我已经弄清楚了如何进行实际的 SVN->Git 转换,以便对其进行排序,我正在研究如何最好地安排分支以在未来得到证明,以防我们需要更多的开发人员并且不得不工作并行。

但是,我需要澄清的部分是我应该使用 Git 来处理登台和生产服务器的方式。

目前,该过程是使用 svn update 将新代码放到登台服务器上。然后我们做一个 svn 副本来创建一个新的发布分支,然后一个 svn 开关来使用那个分支。

当更改显示在那里进行时,我们转到生产代码并 svn 切换到生产中的新发布分支。

如果我要使用git,这样做是否正确?

1) 更改本地代码

$ git add <whatever>
$ git commit -m 'Something'
$ git push origin master

2) SSH 到网络服务器

$ cd <staging dir>
$ git pull

3) 在暂存站点上测试更改

4) 一旦更改生效

$ cd <production dir>
$ git pull

?

或者我需要在某处或某处进行 git checkout 吗?

【问题讨论】:

  • @bodget 看起来不错,我就是这样做的。也许你可以为版本发布创建一个标签。

标签: git svn git-svn


【解决方案1】:

我认为使用单独的分支进行登台和生产比依赖何时将主分支拉到哪个目录更好,因为您可以对部署进行版本控制。

例如,当您想进行暂存时,git push origin staging。然后在暂存目录中,

git checkout staging
git pull

当你满意时

git checkout production
git merge staging
git push 

(如果您偏执,请验证它是否仍然有效)然后

cd <production>
git checkout production   #just to be sure
git pull

【讨论】:

  • 感谢您的回答-但是,我不确定这到底给了我什么。通常,该过程是在对登台服务器进行这些更改之前测试另一台服务器上的所有更改(称为测试)。然后,只要登台服务器站点看起来不错,我就会(立即)去生产服务器上 git pull 。那么你说的“依赖什么时候把master分支拉到哪个目录”是什么意思呢?
  • 我的意思是你并没有真正在 staging -> 生产步骤中涉及 git,你基本上可以从 staging 目录复制或 rsync 到生产目录。我并不是说这是错误的,我只是认为将 staging 和 production 放在他们自己的分支中会增加一个安全网,特别是如果你并行或分布式工作。但如果你是唯一一个进行部署的人,那可能只是开销。
  • ... 所以 git-wise,你建议的工作流程很好,但 Rogier 已经对此发表了评论。但它并不能真正将您的 SVN 工作流程与新的发布分支相匹配,是吗?
  • 嗯,好的 - 明白了。是的,所以这确实是我的下一个问题 - 分支。我不喜欢当前的 SVN 工作流程 - 我认为登台和生产服务器都应该运行 master,而不是一些随机发布分支。
  • 所以我想知道从我开始使用 git 的那一刻起,使用 git flow 之类的东西是否是最好的方法?还是您认为这对于小型操作(目前只有开发人员)可能有点过头了?
猜你喜欢
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2013-01-07
  • 1970-01-01
相关资源
最近更新 更多