如何在我的服务器上设置非裸git仓库?

时间:2011-11-28 19:33:44

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

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

问题是,我不能让git表现出来。也许我只是不了解从根本上了解正在发生的事情。我在开发服务器上设置了repo,但是当我将它克隆到我的个人计算机上时,我无法“推”回它,因为它抱怨推送到非裸机库。所以,我尝试分支回购,并推动分支,但现在我得到了很多快进的陈述,我不认为我也想要那些。

所以我的问题是这个。如何设置服务器以使其全部“正常”?服务器不能是一个简单的仓库,它需要有代码,所以我们可以测试应用程序。我们希望能够顺利地从回购推送到我们自己的开发计算机。并且服务器需要能够推送到Heroku(它已经可以执行此操作)。这是在我自己的服务器上,所以我可以完全访问我需要的任何工作。 (Ubuntu Server Edition 11.04)。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

请注意,我不是只使用开发和生产服务器(每个服务器都有自己的非裸存储库),而是还有第三个存储库,一个裸存储库,在将它们发送到dev之前,我将其更改为第一个存储库;这样,我只从一个地方推送到开发服务器,这有助于保持同步。

答案 1 :(得分:0)

为了阐述@David Zaslavsky的评论,我会设置一个裸仓库来推动大部分时间,然后使用类似git-deploy的东西推送到您的开发服务器。你得到的语义与推送Heroku相同,没有Heroku。