这是我的设置:
我有一个带有托管服务的“master”git存储库。所有代码都必须在这里结束。叫这个“主人”。
由于权限(希望限制用于托管服务的ssh密钥的数量),并且由于我最初开始编写指向另一个repo的代码,所以在vps上有一个裸存储库。叫这个“vps”。
我在本地进行开发,推到vps,定期登录vps并推到master。
我遇到的问题是我通过从master克隆来部署我的网站。我做了一些改变,把它们推回主人那里。所以现在我需要在vps上执行git pull
,这样它就能从master获得最新的代码。不幸的是,当我尝试这一点时,git告诉我不能用一个裸存储库来实现这一点。为了使事情变得更复杂,我没有意识到这一点,所以我把一些新代码从开发推到了vps上,因此vps在日志的一部分丢失了一些提交(即不是所有代码中最近的提交)。
我该如何解决这个问题,还有什么方法可以很好地设置,这样我就可以推拉vps?
谢谢
--编辑--
好的,所以我需要能够合并最后3个提交从vps到一个新的主克隆。我如何才能做到这一点,我应该如何配置git中的存储库?
最佳答案
如果必须进行合并(或cherrypick,可能涉及合并),则需要在非裸存储库上进行合并。
你可以在本地开发机器上完成。将master和vps都设置为远程,从两者获取,并将它们合并到本地开发master分支中。然后把这个分支推到vps,然后把它从vps推到master。这两种推动都应该是快速推进和工作的(前提是没有人在同一时间推动对vps或master的任何更改,在这种情况下再次合并)。
另一种选择是将vps从裸机转换为普通机并在那里进行合并。您可以通过重新创建vps(不使用--bare开关从主服务器克隆)来完成此操作。如果在同一位置重新创建,则本地开发的远程设置仍将指向它。
关于git - 无法从一个裸git repo pull 到另一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5862015/