首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从git diff中排除目录

从git diff中排除目录
EN

Stack Overflow用户
提问于 2010-12-08 03:51:25
回答 5查看 84.3K关注 0票数 225

我想知道如何从我的Git diff中排除整个目录。(在本例中为/spec)。我正在使用git diff命令为我们的整个软件版本创建一个diff。然而,对规范的更改与此过程无关,只会带来令人头疼的问题。现在我知道我能做到

代码语言:javascript
复制
git diff previous_release..current_release app/

这将为app目录中的所有更改创建一个diff,但不是在lib/目录中。有人知道如何完成这项任务吗?谢谢!

编辑:我只是想弄清楚,我知道我可以只在最后字符串我所有目录的参数,减去/spec。我希望有一种方法可以在命令中真正排除单个目录。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-08 04:13:14

假设您使用bash,并且已经启用了扩展全局搜索(shopt -s extglob),那么您可以从外壳端处理它:

代码语言:javascript
复制
git diff previous_release current_release !(spec)

省去了你列出所有其他东西的麻烦。

或者,外壳不可知论:

代码语言:javascript
复制
git diff previous_release current_release --name-only | grep -v '^spec/' \
    | xargs git diff previous_release current_release --

您可以将其封装在一个一行的shell脚本中,以避免重新键入参数。

票数 145
EN

Stack Overflow用户

发布于 2015-04-01 01:12:31

基于this answer,您还可以使用:

代码语言:javascript
复制
git diff previous_release..current_release -- . ':!spec'

这是一个较新的git特性,允许排除某些路径。它应该比各种shell oneliners更可靠。

我之所以在这里发布这个问题,是因为这个问题仍然是"git diff exclude path“的第一个命中。

从Git2.13 (Q2 2017)开始,你可以用^代替!。后者不需要引号。所以你可以把它写成:

代码语言:javascript
复制
git diff previous_release..current_release -- . :^spec
票数 398
EN

Stack Overflow用户

发布于 2017-09-13 02:33:29

Git diff现在接受自定义排除格式:git diff -- ':(exclude)lib/*'

如果你有很多重复的文件夹名称('/app','/lib‘等),要小心,因为这会排除相对于当前工作目录和git根目录的文件。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4380945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档