2

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

开发http://development.myrepo.something

生产http://production.myrep.something

现在我通常在不同的计算机上工作。我需要一个设置,在该设置中,我实际上可以将所有工作从不同的计算机推送到开发 url,当我满意时,我将相同的东西推送到生产 url。

到目前为止我做了什么

  1. 在两个 URL 上复制完全相同的文件。此时,两个 URL 在浏览器中都给了我相同的结果。

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

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

所以我当时想,我现在可以在本地工作,然后推送到开发仓库,当我满意时,我可以再次推送到生产仓库。

但它不起作用,因为每当我推送时,它都会向我显示错误,因为存储库不是裸露的。

那我现在该怎么办?

我正在考虑遵循此链接的分支方法

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

请给我一些启发,并指出我正确的方向。

4

1 回答 1

3

在你的服务器上有一个存储库作为生产代码的存储,并在它附近的某个地方设置第二个非裸存储库,它将从裸存储库中提取以进行测试。不要试图对抗 git。

这个想法是,如果您使用存储库实际在其中编写代码,那么您不应该推送到它。


所以,首先你为你的代码创建一个 repo:

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

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

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

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

完成后将您的更改推回。

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

如果您希望在推送到存储库时自动部署代码,有许多教程解释了如何使用 hoos 实现这一点(这里是其中之一)。

于 2013-06-13T08:25:51.380 回答