Git 制作';代理';存储库
我试图找出一些合理的解决方案,以便能够跨多个环境跟踪更改 基本上,我有以下设置: 我可以从MyPC访问gitlab存储库。此存储库不能从internet访问,只能通过某些VPN连接访问。在另一个实例中,我需要在一台只有(加密的)RDP连接的PC的远程实例上测试和开发代码。从远程PC我无法访问互联网;也没有连接到远程gitlab存储库的方法。但我确实有Windows网络驱动器通过RDP连接到我的电脑 所以我在想:是否有可能对远程PC进行更改;然后把它们推给MyPC;在可能进行其他修改以将其推送到gitlab的远程存储库之后 我想我需要用一个简单的存储库来确定一些配置。但老实说,我一点也不知道 我试图/或试图避免的事情:Git 制作';代理';存储库,git,Git,我试图找出一些合理的解决方案,以便能够跨多个环境跟踪更改 基本上,我有以下设置: 我可以从MyPC访问gitlab存储库。此存储库不能从internet访问,只能通过某些VPN连接访问。在另一个实例中,我需要在一台只有(加密的)RDP连接的PC的远程实例上测试和开发代码。从远程PC我无法访问互联网;也没有连接到远程gitlab存储库的方法。但我确实有Windows网络驱动器通过RDP连接到我的电脑 所以我在想:是否有可能对远程PC进行更改;然后把它们推给MyPC;在可能进行其他修改以将其推送到
我能做什么?如果MyPC可以从远程PC访问文件共享,这将更容易(您只需将远程PC的repo添加为MyPC repo上的第二个远程,这样您就可以
获取
(然后在本地合并
(或重新设置基础
),而不是推送
);但听起来情况并非如此
因此,您可以从远程PC的回购推送到MyPC回购,但默认情况下,您不能推送到当前已签出的分支。(如果MyPC也积极用于开发,那么我建议不要更改默认行为。)
听起来您已经将MyPC repo添加为远程PC的repo上的远程(尽管如果您使用了/just/a/path/to/the/repo
,我建议您使用file://localhost/just/a/path/to/the/repo
改为键入URL)。然后,您只需要设置一个push
refspec,以避免写入MyPC回购已签出的分支。例如,如果MyPC是名为origin
的远程计算机,则
git config remote.origin.push +refs/heads/*:refs/heads/myRemote/*
将
push
上的默认行为设置为映射,例如,master
到myRemote/master
。(基本上,在推送之后,它会在myPC
repo中显示,就好像您从名为myRemote
的远程设备中获取了ed一样。然后您可以像往常一样合并或重新设置更改的基础。)如果myPC可以从远程PC访问文件共享,这将更容易(您只需将远程PC的回购添加为MyPC回购上的第二个远程,这样您就可以获取
(然后本地合并
(或重设基础
),而不是推送
);但听起来情况并非如此
因此,您可以从远程PC的回购协议推送到MyPC回购协议,但默认情况下,您不能推送到当前签出的分支机构。(如果MyPC也积极用于开发,那么我建议不要更改默认行为。)
听起来您已经将MyPC repo添加为远程PC的repo上的远程(尽管如果您使用了/just/a/path/to/the/repo
,我建议您使用file://localhost/just/a/path/to/the/repo
改为键入URL)。然后,您只需设置一个推送
refspec,以避免写入MyPC回购已签出的分支。例如,如果MyPC是名为origin
的远程分支,则
git config remote.origin.push +refs/heads/*:refs/heads/myRemote/*
将push
上的默认行为设置为映射,例如,master
到myRemote/master
(基本上在推送之后,它将在myPC
repo中查看,就像您从名为myRemote
的远程设备中获取一样。然后您可以像往常一样合并或重新设置更改的基础。)