2013-06-13 53 views
1

我是GIT的新手。我有一个生产网址,另一个是我想要推送新代码的开发网址。使用git测试和生产服务器设置

发展http://development.myrepo.something

生产http://production.myrep.something

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

我做了什么至今

  1. 复制正好在两个网址相同的文件。在这一点上,这两个网址都给了我同样的结果。

  2. 在这两个目录中执行git init,并使它们成为git repos。

  3. 在本地git bash中,我从某个目录下的生产URL克隆。
  4. 然后我添加了一个这样的远程起源 - git remote add production ...... //服务器路径在这里
  5. 现在我从这个回购这样拉 - git拉生产,结果就像“UP TO DATE “这是我想要的。现在从两个分支拉出给我同样的信息,这是完美的。

所以,我认为,我现在可以在本地工作,然后推动发展回购,当满意时我可以再次推到生产回购。

但它不起作用,因为每当我推,它显示我的错误,因为回购并非光秃秃的。

那么我现在要做什么?

我想遵循从这个Link

分支的方法,但问题是,我希望看到/测试的开发分支服务器上的工作。采用上述链接中提到的方法,我只能在合并执行后才能看到。

请摆脱一些光线并指向正确的方向。

回答

2

让你的服务器上仓库作为生产代码的存储,并设置第二非纯仓库附近的某处也将从裸一个用来测试拉。不要试图对抗git。

这个想法是,如果你正在使用一个存储库,实际上编写代码,那么你不应该推它。


所以,首先你创建一个回购为您的代码:

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

这是你作为你的开发代码中央存储使用回购协议,这将是一个从外部可见通过http或其他。您可以在工作仓库中将其配置为远程“dev”(或“origin”)。

因此,您刚刚配置的回购是一个推/拉回购,您实际上没有在其中工作:您在其克隆中编写代码,然后推送您的更改。即使您碰巧在同一台机器上工作,只需克隆:

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

并且完成后将您的更改推回。

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

如果你想你的代码部署时自动推送到回购,有一些教程解释如何与胡斯实现这一点(这里是one of them)。

+0

你能否详细解释一下这个过程? – beNerd

+0

@beNerd我已经更新了答案。 – kirelagin

+0

另一个问题....我错误地启动了一些目录上的裸回购。我可以撤消该目录并在其他目录中执行此操作吗? – beNerd