是否有一个选项来限制git差异到一个给定的文件扩展名集?
当前回答
上面的答案似乎都不适合我在git bash下的Windows。我不确定这是否是一个版本的事情(我使用1.8.4)或Windows/bash的事情;此外,在我的情况下,我想区分两个分支,其中每个分支都有其他分支中不存在的额外文件(因此“查找”基于的是疏忽)。
不管怎样,这对我来说是有效的(在我的例子中,寻找python文件之间的差异):
git diff branch1 branch2 -- `git diff --summary branch1 branch2 | egrep '\.py$' | cut -d ' ' -f 5`
其他回答
Git diff只会显示非暂存文件中的差异。
我发现这个问题是因为我想从git diff中排除.info文件,我通过git add *.info来实现这一点,这减少了剩下的文件。
最后我得出了这个结论:
commit=<the_commit_hash_goes_here> && git diff --name-only $commit | grep -i Test | egrep -v '\.sql$' | xargs git diff $commit --
只有当文件名包含单词“test”(不区分大小写)并且不以.sql结尾时,才会显示指定提交的差异,根据您的情况修改管道。
在git版本2.18.0上测试时,文件扩展名应该使用双引号。如果你想找到本地存储库和远程存储库之间的最后一个差异,在拉取后,你可以使用:
git diff YourBranchName@{1} YourBranchName --name-only "*.YourFileExtionsion"
例如:
git diff master@{1} origin/master --name-only "*.cs"
上面的答案似乎都不适合我在git bash下的Windows。我不确定这是否是一个版本的事情(我使用1.8.4)或Windows/bash的事情;此外,在我的情况下,我想区分两个分支,其中每个分支都有其他分支中不存在的额外文件(因此“查找”基于的是疏忽)。
不管怎样,这对我来说是有效的(在我的例子中,寻找python文件之间的差异):
git diff branch1 branch2 -- `git diff --summary branch1 branch2 | egrep '\.py$' | cut -d ' ' -f 5`
是的,如果你确保git扩展一个glob而不是你的shell,那么它将在任何级别匹配,所以像这样的东西(引号很重要)应该工作得很好。
git diff -- '*.c' '*.h'
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别