1

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

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

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

谢谢!

4

2 回答 2

2

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

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

于 2011-11-28T19:44:25.840 回答
0

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

于 2011-11-28T19:54:57.967 回答