【问题标题】:How can I setup a non-bare git repo on my server?如何在我的服务器上设置非裸 git repo?
【发布时间】:2012-01-08 05:33:44
【问题描述】:

我正在尝试与我的朋友建立一个体面的开发模式。计划是我们在自己的电脑上进行独立开发,然后推送到开发服务器进行测试,然后我们从开发服务器推送到生产服务器(Heroku)。

问题是,我无法让 git 正常运行。也许我只是不够了解,无法从根本上理解正在发生的事情。我已经在开发服务器上设置了 repo,但是当我将它克隆到我的个人计算机时,我无法“推回”它,因为它抱怨推送到非裸 repo。所以后来我尝试分支 repos,并推送分支,但现在我得到了很多快进语句,我想我也不想要这些。

所以我的问题是这样的。如何设置服务器以使其“正常工作”?服务器不能是一个裸仓库,它需要在其中包含代码,以便我们可以测试应用程序。我们希望能够顺利地从 repo 推送和拉取到我们自己的开发计算机。并且服务器需要能够推送到 Heroku(它已经可以做到这一点)。这是在我自己的服务器上,所以我可以完全访问我需要让它工作的任何东西。 (Ubuntu 服务器版 11.04)。

谢谢!

【问题讨论】:

    标签: ruby-on-rails git git-push git-pull


    【解决方案1】:

    为了解释@David Zaslavsky 的评论,我会设置一个裸仓库来推送到大部分时间,然后使用git-deploy 之类的东西推送到您的开发服务器。在没有 Heroku 的情况下,您将获得与推送到 Heroku 相同的语义。

    【讨论】:

      【解决方案2】:

      默认情况下您无法推送到非裸存储库的原因是非裸存储库具有与之关联的签出工作副本。当您将更新推送到已签出的分支时,工作副本将与其自己的存储库不同步,除非您专门运行命令来更新它(您可以使用 post-receive 挂钩来完成)。如果您知道这一点并且无论如何都想推送到非裸存储库,您可以将 receive.denyCurrentBranch 配置属性设置为 ignore 并且 git 将允许推送。有关更多详细信息,请参阅我前段时间写的 blog post(可能需要更新),其中描述了我用于自己网站的类似设置。

      请注意,不仅仅是开发和生产服务器(每个都有自己的非裸存储库),我还有第三个存储库,一个裸存储库,我先将更改推送到它,然后再将它们发送给开发人员;这样,我只从一个地方推送到开发服务器,这有助于保持同步。

      【讨论】:

      • 我想你最后的想法是我将如何做到这一点。制作一个新的裸仓库,然后将所有内容推送到该仓库。然后,为了测试,我可以从裸仓库中提取,并测试所有代码。也许是一个额外的步骤,但它看起来是更好的做法。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多