使用git设置测试和生产服务器

时间:2013-06-13 07:36:31

标签: git repository

我是GIT的新手。我有一个生产网址和另一个作为开发网址,我想推送新代码。

开发http://development.myrepo.something

制作http://production.myrep.something

现在我通常在不同的电脑上工作。我需要一个设置,我可以将我的所有工作从不同的计算机推送到开发网址,当我感到满意时,我会在生产网址中推送相同的内容。

我做得太多了

  1. 在两个URL上复制完全相同的文件。此时,两个URL都会在broswer中给出相同的结果。

  2. 在两个目录中执行git init并将它们作为git repos。

  3. 在本地git bash中,我从某个目录的生产URL克隆。
  4. 然后我添加了这样的远程源 - git remote add production ...... //服务器路径
  5. 现在我从这个回购中拉出来了 - git pull production,结果像“UP TO DATE”这就是我想要的。现在从两个分支拉出来给我同样的信息是完美的。
  6. 所以,在我想到的时候,我现在可以在当地工作,然后推向开发回购,当满意时我可以再次推向生产回购。

    但它不起作用,因为无论何时推,它都会显示错误,因为回购不是裸露的。

    那我现在该怎么办?

    我正在考虑遵循此Link

    的分支方法

    但问题是我想在开发分支中查看/测试服务器上的工作。使用上面链接中提到的方法,我只能在合并完成后才能看到。

    请提出一些建议并指出正确的方向。

1 个答案:

答案 0 :(得分:2)

在您的服务器上有一个存储库作为生产代码的存储,并在它附近的某个地方设置第二个非裸存储库,它将从裸存储库中测试。不要'试着反对git。

我的想法是,如果您使用存储库实际上编写代码,那么您就不应该推送它。


因此,首先要为代码创建一个repo:

$ cd /path/to/dir/with/dev/repo
$ git init --bare

这是您将用作dev代码的中央存储的repo,这个将通过http或其他方式从外部可见。您可以在工作回购中将其配置为远程“dev”(或“origin”)。

所以,再次,您刚刚配置的repo是一个push / pull-only repo,您​​实际上并没有在其中工作:您在其克隆中编写代码然后推送您的更改。即使您碰巧在同一台机器上工作,也只需克隆:

$ cd /path/to/work/dir
$ git clone /path/to/dir/with/dev/repo

完成后再推送您的更改。

这同样适用于您的“生产”回购。您为生产代码存储设置了一个裸存储库,然后如果要对其进行测试或在服务器上进行部署,则只需将其克隆到同一服务器上的非裸存储库即可。我有一个回购测试。

如果您希望在推送到repo时自动部署代码,有很多教程解释如何通过hoos实现此目的(这里是one of them)。< / p>