如何用git diff对比Git仓库特定提交内目录与外部目录?
用Git对比仓库特定提交目录与外部目录的方法
你没法直接用git diff直接对比Git提交里的目录和仓库外的目录,因为git diff默认只处理仓库内的版本或者工作区里的内容。不过可以通过以下步骤间接实现需求:
1. 把提交里的目录提取到临时文件夹
先把目标提交中指定目录的内容导出到临时目录,方便后续对比:
# 创建临时目录 mkdir -p /tmp/git-temp-dir # 从Git提交提取目录内容到临时目录 git -C "/path/to/your/git/repo" archive <提交哈希>:<仓库内目录路径> | tar x -C /tmp/git-temp-dir
2. 用git diff对比临时目录和外部目录
用git diff的--no-index参数来对比临时目录和外部目录(这个参数专门用来对比非Git仓库里的文件/目录):
git diff --no-index /tmp/git-temp-dir "/path/to/your/external/folder"
3. (可选)清理临时目录
对比完之后可以删掉临时目录:
rm -rf /tmp/git-temp-dir
另外,要是不想创建临时目录,也可以结合diff命令和Git归档功能直接对比,但这不算纯git diff的用法:
diff -r <(git -C "/path/to/repo" archive <提交哈希>:<仓库内目录路径> | tar xOf -) "/path/to/external/folder"
内容的提问来源于stack exchange,提问作者Meir
相关产品推荐
相关产品推荐

