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

如何通过Git命令同时导出分支与master的差异文件两份副本

Git 批量导出两个分支差异对应版本文件的解决方案

你之前使用的cp命令仅能拷贝当前工作目录的实体文件,不会读取分支内的提交版本,因此交换分支对比顺序也不会改变导出结果。
可以直接在 Git Bash 中执行以下脚本完成批量导出:

# 提前创建两个版本的存储目录
mkdir -p C:/Temp/master
mkdir -p C:/Temp/mybranch

# 遍历所有差异文件,分别导出两个分支的对应版本
git diff MyBranch master --name-only | while read file; do
  # 导出 master 分支版本,自动创建对应子目录保持原结构
  mkdir -p "C:/Temp/master/$(dirname "$file")"
  git show "master:$file" > "C:/Temp/master/$file"

  # 导出 MyBranch 分支版本
  mkdir -p "C:/Temp/mybranch/$(dirname "$file")"
  git show "MyBranch:$file" > "C:/Temp/mybranch/$file"
done

优化说明

  • 如果差异列表中包含某一分支已删除的文件,可以添加分支文件存在性判断,避免导出时报错,调整后的循环逻辑如下:
git diff MyBranch master --name-only | while read file; do
  # 仅当文件在 master 分支存在时导出
  if git cat-file -e "master:$file" 2>/dev/null; then
    mkdir -p "C:/Temp/master/$(dirname "$file")"
    git show "master:$file" > "C:/Temp/master/$file"
  fi
  # 仅当文件在 MyBranch 分支存在时导出
  if git cat-file -e "MyBranch:$file" 2>/dev/null; then
    mkdir -p "C:/Temp/mybranch/$(dirname "$file")"
    git show "MyBranch:$file" > "C:/Temp/mybranch/$file"
  fi
done
  • 如果你不需要本地存储两份文件,仅需要对比差异,可以直接配置 Git 的外部对比工具,执行git difftool -d MyBranch master即可直接调用你常用的 Windows 对比工具打开目录级差异对比,无需手动导出文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:09:03