当前位置: 首页 > news >正文

git中用于生成commitId与其父commitId间的文件差异文件树

生成commitId与其父commitId间的文件差异文件树

#!/bin/bash
#
#	用于生成目标commitId与其父commitId间文件差异
#
commit_id=$1  # 输入目标commit的哈希值
old_dir="old_version"
new_dir="new_version"

# 创建目录
mkdir -p "$old_dir" "$new_dir"

# 获取差异文件列表
files=$(git diff --name-only "${commit_id}^" "$commit_id")

# 导出文件
for file in $files; do
    # 父commit版本
    mkdir -p "$old_dir/$(dirname "$file")"
    git show "${commit_id}^:$file" > "$old_dir/$file" 2>/dev/null || echo "[跳过] 父提交中不存在: $file"

    # 当前commit版本
    mkdir -p "$new_dir/$(dirname "$file")"
    git show "${commit_id}:$file" > "$new_dir/$file" 2>/dev/null || echo "[跳过] 当前提交中不存在: $file"
done

mv "$old_dir" "$commit_id"_"$old_dir"
mv "$new_dir" "$commit_id"_"$new_dir"

相关文章:

  • 部分国产服务器CPU及内存性能测试情况
  • 【Git “push“ 命令详解】
  • Git Flow 分支管理详解
  • Linux 中dmesg, kern.log, syslog 什么关系?有什么用?
  • 汽车加气站操作工考试答题模板
  • linux xargs命令学习
  • Flink TaskManager之间数据传输(NetworkManager)
  • MySQL进阶 面试速记
  • 基于 docker 的 LLaMA-Factory 全流程部署指南
  • 开发体育直播即时比分系统:赛事收藏功能的技术实现方案
  • vscode集成deepseek实现辅助编程(银河麒麟系统)【详细自用版】
  • Android学习总结之Kotlin 协程
  • presto行转列
  • Vulnhub-zico2靶机打靶记录
  • ML 聚类算法 dbscan|| OPTICS|mean-shift
  • C语言基础系列【32】指针进阶5:指针与常量
  • 上市电子制造企业如何实现合规的质量文件管理?
  • 0301-组件基础-react-仿低代码平台项目
  • 【AI微信小程序开发】AI减脂菜谱小程序项目代码:根据用户身高/体重等信息定制菜谱(含完整前端+后端代码)
  • 爱心计算器:用 Python 创建带有动态爱心效果的计算器
  • 2025年五一档电影新片票房破3亿
  • 阿根廷发生5.8级地震
  • 新能源车盈利拐点:8家上市车企去年合计净利854亿元,多家扭亏
  • 新片|《我仍在此》定档5月,《新·驯龙高手》同步北美上映
  • 十四届全国人大常委会第十五次会议在京闭幕
  • 《中国奇谭》首部动画电影《浪浪山小妖怪》定档8月2日