Git 制作';代理';存储库

Git 制作';代理';存储库,git,Git,我试图找出一些合理的解决方案,以便能够跨多个环境跟踪更改 基本上,我有以下设置: 我可以从MyPC访问gitlab存储库。此存储库不能从internet访问,只能通过某些VPN连接访问。在另一个实例中,我需要在一台只有(加密的)RDP连接的PC的远程实例上测试和开发代码。从远程PC我无法访问互联网;也没有连接到远程gitlab存储库的方法。但我确实有Windows网络驱动器通过RDP连接到我的电脑 所以我在想:是否有可能对远程PC进行更改;然后把它们推给MyPC;在可能进行其他修改以将其推送到

我试图找出一些合理的解决方案,以便能够跨多个环境跟踪更改

基本上,我有以下设置:

我可以从MyPC访问gitlab存储库。此存储库不能从internet访问,只能通过某些VPN连接访问。在另一个实例中,我需要在一台只有(加密的)RDP连接的PC的远程实例上测试和开发代码。从远程PC我无法访问互联网;也没有连接到远程gitlab存储库的方法。但我确实有Windows网络驱动器通过RDP连接到我的电脑

所以我在想:是否有可能对远程PC进行更改;然后把它们推给MyPC;在可能进行其他修改以将其推送到gitlab的远程存储库之后

我想我需要用一个简单的存储库来确定一些配置。但老实说,我一点也不知道

我试图/或试图避免的事情:

  • 我的开发环境不能通过网络驱动器工作——这将是最简单的解决方案;但不幸的是,有些奇怪的问题我没能解决(这与这个问题没有太大关系)
  • 我从网络驱动器克隆了存储库,但无法将更改推送到存储库;git警告我不要破坏索引

  • 我能做什么?

    如果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
    的远程设备中获取
    一样。然后您可以像往常一样合并或重新设置更改的基础。)