如何用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
相关产品推荐
相关产品推荐

