Git: 让远程服务器从本地服务器拉取
Git: let remote server pull from local server
我目前有以下环境:
- 本地 git 服务器 (Linux)
- 开发 PC(Linux 大多数)
- 实时应用程序的远程服务器 (Linux)
两个服务器都可以从开发 PC 访问(通过 ssh),但是开发 PC 和本地 git 服务器不是 'online'(只是普通的消费者家庭网络,没有转发或类似的东西).
本地 git 服务器有裸仓库,开发 PC 有本地 git 服务器的克隆仓库。
现在我想将存储库从 git 服务器克隆到远程服务器。远程服务器是应用程序的实时服务器。所以每次应用程序获得更新时,远程服务器都必须再次从本地服务器拉取。
因为我以前从未有过这个用例(远程无法连接到本地服务器来拉取),所以我完全不知道该怎么做。
提前感谢所有试图提供帮助的人:)
如果我正确地解释了原始问题,本地服务器只能由开发 PC 访问,而不能从远程服务器访问。
这意味着一种可能的解决方案是推送到本地存储库中的服务器存储库(而不是从服务器存储库中的本地存储库获取)。您甚至可以推送到空存储库:
$ git push -u <server-repo> <branch-name>
选项-u
是可选的,仅用于设置后续推送的默认远程分支。
因为远程服务器上的存储库不是空的(您需要对应用程序进行签出),默认情况下它将拒绝推送到已签出的分支。
有几种选择可以解决这个问题。一种变体是使用 push-to-checkout
挂钩,它似乎完全可以满足您的需要。详情请参考git help githooks
。不要忘记相应地设置配置 receive.denyCurrentBranch
和 以确保索引和文件永远不会被远程服务器更改。
我目前有以下环境:
- 本地 git 服务器 (Linux)
- 开发 PC(Linux 大多数)
- 实时应用程序的远程服务器 (Linux)
两个服务器都可以从开发 PC 访问(通过 ssh),但是开发 PC 和本地 git 服务器不是 'online'(只是普通的消费者家庭网络,没有转发或类似的东西).
本地 git 服务器有裸仓库,开发 PC 有本地 git 服务器的克隆仓库。
现在我想将存储库从 git 服务器克隆到远程服务器。远程服务器是应用程序的实时服务器。所以每次应用程序获得更新时,远程服务器都必须再次从本地服务器拉取。
因为我以前从未有过这个用例(远程无法连接到本地服务器来拉取),所以我完全不知道该怎么做。
提前感谢所有试图提供帮助的人:)
如果我正确地解释了原始问题,本地服务器只能由开发 PC 访问,而不能从远程服务器访问。
这意味着一种可能的解决方案是推送到本地存储库中的服务器存储库(而不是从服务器存储库中的本地存储库获取)。您甚至可以推送到空存储库:
$ git push -u <server-repo> <branch-name>
选项-u
是可选的,仅用于设置后续推送的默认远程分支。
因为远程服务器上的存储库不是空的(您需要对应用程序进行签出),默认情况下它将拒绝推送到已签出的分支。
有几种选择可以解决这个问题。一种变体是使用 push-to-checkout
挂钩,它似乎完全可以满足您的需要。详情请参考git help githooks
。不要忘记相应地设置配置 receive.denyCurrentBranch
和 以确保索引和文件永远不会被远程服务器更改。