You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发工作站无法直接访问Git仓库的跨机协作方案技术咨询

嘿,这个场景我之前碰到过类似的,刚好能给你一套适配你三台机器环境的Git协作方案,比你现在复制整个项目高效太多了!

方案1:使用Git Bundle(最推荐,原生高效)

Git的bundle功能专门解决离线环境下的代码同步问题,它能把仓库的变更打包成单个文件,只传输差异内容,比复制整个项目文件夹节省大量时间。

从机器A同步最新代码到机器C(拉取流程)

  1. 在机器A上打包仓库:
    打开Git终端(Windows用Git Bash),进入仓库目录,执行命令生成bundle文件:

    # 打包main分支的所有内容(如果要同步所有分支,换成 --all)
    git bundle create repo.bundle main
    

    生成的repo.bundle就是包含所有Git版本信息的单个文件,体积远小于整个项目。

  2. 中转文件:把repo.bundle从A复制到B,再从B复制到C。

  3. 在机器C上克隆/拉取:

    • 如果你还没有本地仓库(用Git命令):
      git clone repo.bundle my-project
      
    • 用SourceTree操作:

      打开SourceTree → 点击「新建」→ 「从克隆URL克隆」→ 在URL框选择repo.bundle的本地路径 → 选好存储目录 → 点击克隆。

    • 如果你已有本地仓库,拉取更新(Git命令):
      git pull repo.bundle main
      
    • SourceTree拉取更新:

      打开仓库 → 点击「拉取」→ 「远程仓库」下拉框选「添加仓库」→ 浏览选择repo.bundle → 选择目标分支 → 点击拉取。

从机器C推送代码到机器A(提交流程)

  1. 在机器C上完成本地提交:

    • Git命令:
      git add .
      git commit -m "修复XX问题/新增XX功能"
      
    • SourceTree操作:

      把变更文件拖到「已暂存文件」区域 → 输入提交描述 → 点击「提交」。

  2. 打包本地变更:
    你需要指定从机器A的最新提交之后的变更打包(可以通过git log查看上次拉取时的最后一个提交哈希,比如abc123):

    # 打包abc123之后main分支的所有新增提交
    git bundle create changes.bundle abc123..main
    # 如果是基于上次拉取的远程分支,也可以用:git bundle create changes.bundle origin/main..main
    

    这个changes.bundle只包含你新增的提交,体积非常小。

  3. 中转文件:把changes.bundle从C复制到B,再从B复制到A。

  4. 在机器A上拉取变更:

    # 先验证bundle有效性(可选)
    git bundle verify changes.bundle
    # 拉取变更到main分支
    git pull changes.bundle main
    

适配你环境的小Tips

  • 机器B只需要做文件中转,不需要任何Git操作,完全不用改动它的SourceTree配置。
  • 机器C上用SourceTree的话,记得先装好Git(SourceTree依赖Git环境),可以在SourceTree的「工具→选项→Git」里检查路径是否配置正确。
  • 同步前尽量保证本地分支干净(没有未提交的变更),如果遇到冲突,和普通Git冲突处理流程一样:解决冲突→提交→再同步。
方案2:用裸仓库作为长期中转(适合频繁同步场景)

如果你们需要高频次同步代码,可以在机器B上创建一个裸仓库,作为A和C的中转节点:

  1. 在机器B上创建裸仓库:
    git init --bare project-bare.git
    
  2. 机器A关联B的裸仓库并推送:
    git remote add machine-b /path/to/machine-b/project-bare.git
    git push machine-b --all
    
  3. 复制B的裸仓库到C:把project-bare.git文件夹从B复制到C,然后在C的本地仓库关联这个裸仓库:
    git remote add machine-b /path/to/copied/project-bare.git
    
  4. 后续同步流程:
    • C开发完提交后,推送到本地的裸仓库:git push machine-b main
    • 把C上的project-bare.git复制回机器B的原位置
    • 机器A拉取变更:git pull machine-b main

这个方案适合长期频繁协作的场景,每次只需要复制裸仓库的变更(比整个项目小很多),但操作比bundle稍复杂一点。

内容的提问来源于stack exchange,提问作者PiotrS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:47:00