下面是我的设置:
我有一个带有托管服务的'master‘git仓库。所有代码都必须在这里结束。把这个叫做'master‘。
由于权限(希望限制用于托管服务的SSH密钥的数量),并且因为我最初开始编写指向另一个存储库的代码,所以我在VPS上获得了一个空的存储库。将其称为“VPS”。
我在本地从事开发工作,推送到VPS,定期登录VPS并推送到主站。
我遇到的问题是,我通过从master克隆来部署我的网站。我做了一些修改,并把它们推回到了师父那里。所以现在我需要在VPS上执行git pull,这样它就可以从主机那里获得最新的代码。不幸的是,当我尝试这样做的时候,git告诉我不能使用一个空的存储库来做这件事。让事情变得更复杂的是,我没有意识到这一点,所以我把一些新的代码从开发中推到了VPS中,所以VPS在日志中遗漏了一些提交(即不是所有代码的最新提交)。
我如何解决这个问题,什么是设置的好方法,以便我可以从VPS中推送和拉出?
谢谢
-编辑--
好的,所以我需要能够将来自VPS的最后3个提交合并到master的新克隆中。我如何做到这一点,我应该如何在git中配置存储库?
发布于 2011-05-03 04:48:51
如果您必须执行合并(或cherrypick,这可能涉及合并),则需要在非裸存储库上执行此操作。
您可以在本地开发机器上执行此操作。创建master和VPS远程,从两者获取,并将它们合并到本地开发主分支中。然后将此分支推送到VPS,然后将其从VPS推送到master。这两个推送都应该是快进和有效的(假设没有人同时推送任何更改到VPS或master,在这种情况下会再次合并)。
另一种选择是将VPS从bare转换为normal,然后在那里进行合并。您可以通过重新创建VPS (从主服务器克隆,不带--bare开关)来完成此操作。如果您在同一位置重新创建它,则本地开发的远程设置仍将指向它。
发布于 2011-05-03 04:20:52
git pull相当于git fetch + git merge。
合并显然需要一个工作副本(以便能够解决冲突,如果有的话)。
由于在两个裸存储库之间移动东西时,您实际上并不想合并任何内容(合并应该在您自己的克隆的工作副本中完成),并且您只想获得分支的新值,所以您应该直接调用git fetch。
发布于 2011-05-03 04:52:45
我不明白你的问题。您可以同时访问VPS和master。您可以在两者之间进行推送和拉动。您可以从两者中提取,合并这些更改,然后将结果向上推送到两者。
https://stackoverflow.com/questions/5862015
复制相似问题