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

如何用git diff对比两个文件夹时排除.git目录?

解决方法与语法解释

正确对比两个目录并排除.git的命令

你之前用的:!.git/:^.git是Git仓库内部的路径筛选语法,不适用于--no-index(用来对比非仓库目录)的场景,所以Git无法识别,直接输出帮助信息。

要对比~/folder_orig和~/folder_dest并排除所有.git目录,使用--exclude选项指定排除模式即可:

git diff --no-index --exclude='.git' folder_orig folder_dest > file.patch

如果需要更精确地排除.git目录下的所有内容,也可以写成:

git diff --no-index --exclude='*/.git/*' folder_orig folder_dest > file.patch

关于Stack Overflow中的语法解释

git diff previous_release..current_release -- . :^spec各部分的含义:

  • previous_release..current_release:指定对比的版本范围,即从previous_release标签/分支到current_release标签/分支的提交差异
  • --:作为分隔符,明确告诉Git后面的内容是路径筛选规则,而非选项参数
  • .:代表当前目录下的所有文件和子目录
  • :^spec:Git的路径排除语法,^表示排除,这里指排除名为spec的目录及其内容

整体作用是:对比两个版本间的代码差异,但只关注当前目录下的内容,同时排除spec目录的变动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:54:55