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

标签 git

这是我的设置:

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

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

我在本地进行开发,推送到 VPS,定期登录 VPS 并推送到 master。

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

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

谢谢

--编辑--

好的,所以我需要能够将 VPS 的最后 3 次提交 merge 到 master 的新克隆中。我该如何做到这一点,以及如何在 git 中配置存储库?

最佳答案

git pull 相当于 git fetch + git merge

merge 显然需要工作副本(以便能够解决冲突(如果有))。

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

关于git - 无法从一个裸 git 存储库 pull 到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862015/

相关文章:

Git 分支删除

Git 与 SVN 主干和分支

git - 我如何 fork 旧版本的 github 项目?

git - 这个预提交钩子(Hook)如何修复尾随空格?

git - 排除 git diff 中删除的行

git - 在git中删除和创建文件以及文件历史记录: possible bug?

Windows 上 Jenkins 中的 git 插件不使用子模块的凭据

git 子模块 : customization

git - 过滤 git 日志以仅显示我的更改

git - 跳过处理先前已经处理过的 post-receive Hook 中的 Git 修订