如何在防火墙后面的内部Git repo与外部机器之间进行通信?

时间:2013-09-10 18:49:30

标签: git firewall

这是我的情况:我有一个位于公司防火墙后面的上游回购。但是开发机器在防火墙之外。我怎么能在他们之间进行交流?我能够通过远程桌面\\ tsclient

从ExternalPC访问InternalPC文件
UpstreamRepo <--> InternalPC <--|firewall|--> ExternalPC

目前,我所做的是使用InternalPC来执行所有git命令(获取,合并,提交,推送等)。然后我手动在InternalPC和ExternalPC之间来回复制文件。但这不允许我在ExternalPC上进行分支和提交,因为当我将文件从InternalPC复制到ExternalPC时它们会被覆盖。

有更好的方法吗?我有一个想法,如果我可以从ExternalPC做git fetch <InternalPC>git push <InternalPC>。有可能吗?

3 个答案:

答案 0 :(得分:2)

您当然可以在内部PC上使用来自外部PC的git pull,例如通过SSH。或者您可以使用上游回购推送。或者,您可以在防火墙中打开端口以访问内部PC。哪个端口是开放的,顺便说一下?

答案 1 :(得分:0)

Erik的想法是正确的。 Git的工作原理很棒。这正是我所做的:

ExternalPC:

git remote set-url origin //tsclient/C/Users/yourname/git
git pull

InternalPC :(推送时无法检出主分支,因此您可以结帐任何其他分支)

git checkout <some-branch-not-master> 

ExternalPC:

git push origin master

答案 2 :(得分:0)

如果您的方案是:

  1. 你为政府工作,所以任何改变都很难
  2. Windows RDP从LOCAL到REMOTE,共享驱动器
  3. 所有编码均在REMOTE上完成
  4. 您很害怕REMOTE将会死亡,并且您希望备份到仅适用于LOCAL的共享驱动器。
  5. 初始步骤:

    1. 检查映射的LOCAL驱动器名称。因为它是H:\
    2. 为您的代码创建基本文件夹,对我来说是H:\Code
    3. 打开git bash
    4. cd //tsclient/H/Code
    5. git clone --no-checkout --local file://C:/Projects/MyImportantProject
    6. 您已将您的存储库克隆到LOCAL H:\Code\MyImportantProject
    7. cd //tsclient/H/Code/MyImportantProject
    8. git remote add remotebox file://C:/Projects/MyImportantProject
    9. 备份步骤:

      1. 您是否参与LOCAL并提交
      2. 打开git bash
      3. cd //tsclient/H/Code/MyImportantProject
      4. git pull remotebox master