当我执行git diff时,它会显示已添加的行:
+ this line is added
已删除的行:
- this line is removed
但它也显示了许多未修改的行:
this line is not modified
this line is also not modified
这将导致实际的git diff如下所示:
+ this line is added
this line is not modified
- this line is removed
this line is not modified
我是否可以要求git只显示已修改的代码行,而忽略所有其他未修改的代码?我已经写了一个方法,它将删除前面没有"+“或"-”符号的所有行,但我相信肯定有更简单的方法来做到这一点。
在我的git diff中,我只对修改过的代码行感兴趣。
发布于 2013-09-15 17:02:30
你想要的是一个0行上下文的diff。您可以使用以下命令生成此代码:
git diff --unified=0
或
git diff -U0
您还可以将其设置为该存储库的配置选项:
git config diff.context 0
要对任何存储库进行全局设置,请执行以下操作:
git config --global diff.context 0
发布于 2014-01-17 18:32:56
在Chris的最新评论之后,后处理的主要问题是,您希望保留以-|+
开头的行,但也希望过滤掉以---|+++
开头的行。另一方面,如果您在存储库中存储补丁文件(我是这样做的,在Pydoop中),那么您希望保留以--|++
开头的行,因此regexp变得有点复杂:
git diff | grep -P '^\+(?:(?!\+\+))|^-(?:(?!--))'
正则表达式使用了负面的先行检查:有关详细的解释,请参阅Peter Boughton对this question的回答。
如果你经常这样做,你可能需要为它设置一个git别名:
git config --global alias.diffonly '!git diff | grep -P "^\+(?:(?!\+\+))|^-(?:(?!--))"'
https://stackoverflow.com/questions/18810623
复制相似问题