首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Git diff仅显示已修改的行

Git diff仅显示已修改的行
EN

Stack Overflow用户
提问于 2013-09-15 16:55:30
回答 2查看 62.8K关注 0票数 162

当我执行git diff时,它会显示已添加的行:

代码语言:javascript
复制
+ this line is added

已删除的行:

代码语言:javascript
复制
- this line is removed

但它也显示了许多未修改的行:

代码语言:javascript
复制
this line is not modified
this line is also not modified

这将导致实际的git diff如下所示:

代码语言:javascript
复制
+ this line is added
  this line is not modified
- this line is removed
  this line is not modified

我是否可以要求git只显示已修改的代码行,而忽略所有其他未修改的代码?我已经写了一个方法,它将删除前面没有"+“或"-”符号的所有行,但我相信肯定有更简单的方法来做到这一点。

在我的git diff中,我只对修改过的代码行感兴趣。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-15 17:02:30

你想要的是一个0行上下文的diff。您可以使用以下命令生成此代码:

代码语言:javascript
复制
git diff --unified=0

代码语言:javascript
复制
git diff -U0

您还可以将其设置为该存储库的配置选项:

代码语言:javascript
复制
git config diff.context 0

要对任何存储库进行全局设置,请执行以下操作:

代码语言:javascript
复制
 git config --global diff.context 0
票数 227
EN

Stack Overflow用户

发布于 2014-01-17 18:32:56

在Chris的最新评论之后,后处理的主要问题是,您希望保留以-|+开头的行,但也希望过滤掉以---|+++开头的行。另一方面,如果您在存储库中存储补丁文件(我是这样做的,在Pydoop中),那么您希望保留以--|++开头的行,因此regexp变得有点复杂:

代码语言:javascript
复制
git diff | grep -P '^\+(?:(?!\+\+))|^-(?:(?!--))'

正则表达式使用了负面的先行检查:有关详细的解释,请参阅Peter Boughton对this question的回答。

如果你经常这样做,你可能需要为它设置一个git别名:

代码语言:javascript
复制
git config --global alias.diffonly '!git diff | grep -P "^\+(?:(?!\+\+))|^-(?:(?!--))"'
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18810623

复制
相关文章

相似问题

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