繁体   English   中英

无法从一个裸 git 存储库拉到另一个

[英]Can't pull from one bare git repo to another

这是我的设置:

我有一个带有托管服务的“主”git 存储库。 所有代码都必须在这里结束。 称其为“大师”。

由于权限(想要限制用于托管服务的 SSH 密钥的数量),并且因为我最初开始编码指向另一个存储库,所以我在 VPS 上有一个裸存储库。 将此称为“VPS”。

我在本地从事开发工作,推送到 VPS,定期登录 VPS 并推送到 master。

我遇到的问题是我通过从 master 克隆部署了我的 web 站点。 我进行了一些更改并将它们推回了master。 所以现在我需要在 VPS 上执行git pull以便它会从 master 获取最新的代码。 不幸的是,当我尝试这个时,git 告诉我我不能使用裸存储库来执行此操作。 为了让事情变得更复杂,我没有意识到这一点,所以我已经将一些新代码从开发推送到 VPS,所以 VPS 在日志中丢失了一些提交(即不是所有代码的最新提交)。

我该如何解决这个问题,什么是设置的好方法,以便我可以从 VPS 推送和拉取?

谢谢

- 编辑 -

好的,所以我需要能够将 VPS 的最后 3 个提交合并到一个新的 master 克隆中。 我该怎么做,我应该如何配置 git 中的存储库?

git pull相当于git fetch + git merge

合并显然需要一个工作副本(以便能够解决冲突,如果有的话)。

由于在两个裸存储库之间移动内容时您实际上不想合并任何内容(合并应该在您自己的克隆的工作副本中完成),并且您只想获取分支的新值,您应该直接调用git fetch .

如果您必须进行合并(或可能涉及合并的cherrypick),则需要在非裸存储库上进行。

您可以在本地开发机器上执行此操作。 制作 master 和 VPS 遥控器,从两者中获取,并将它们合并到您的本地开发 master 分支中。 然后把这个分支推送到VPS,再从VPS推送到master。 这两个推送都应该是快进的并且可以工作(前提是同时没有人向 VPS 或 master 推送任何更改,在这种情况下再次合并)。

另一种选择是将 VPS 从裸机转换为普通机并在那里进行合并。 您可以通过重新创建 VPS(不带 --bare 开关从 master 克隆)来做到这一点。 如果你在同一个地方重新创建它,本地开发的远程设置仍然会指向它。

我不明白你的问题。 您可以同时访问 VPS 和 master。 您可以从/向两者推拉。 您可以从两者中提取,合并这些更改,然后将结果推送到两者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM