如何让git diff跨用户目录对比时仅查看已追踪文件?
问题
使用git diff tag1 tag2时,只会对比Git仓库内已追踪文件的变更;但如果用git diff ~usera/my_dir1 ~userb/my_dir2对比两个独立Git仓库的目录(二者的.git目录相互独立、不共享),这个命令会包含两个目录中的所有未追踪文件。请问是否有参数或选项能让后者的行为和前者一致,仅对比已追踪文件里未提交的变更?
现有临时解决方案
目前有一个不够完善的临时处理脚本,核心思路是先提取两个仓库的已追踪文件列表,再逐个对比这些文件的差异:
parallel 'cd {} && git ls-files' ::: $dirA $dirB | sort -u | parallel diff -Naur $dirA/{} $dirB/{} | less
脚本的执行逻辑:
- 通过
git ls-files分别获取两个目标目录下Git已追踪的文件清单 - 对两个清单合并后去重,得到需要对比的文件集合
- 用
diff -Naur命令逐个对比两个目录中对应文件的差异,最后通过less分页查看结果
内容的提问来源于stack exchange,提问作者Ole Tange
相关产品推荐
相关产品推荐

