首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅在某些文件类型上运行'git diff --check‘

如何仅在某些文件类型上运行'git diff --check‘
EN

Stack Overflow用户
提问于 2012-09-14 23:27:54
回答 1查看 3.4K关注 0票数 4

我一直不知道如何在我提交的Python文件上运行'git diff --check‘。我有一个包含3个文件的提交:

代码语言:javascript
复制
$ git show --name-only
...
tools/gitHooks/preReceive.py
tools/gitHooks/unittests/testPreReceive.py
Makefile

最后两个文件中有尾随的空格。

代码语言:javascript
复制
$ git diff --check HEAD~1 HEAD
tools/gitHooks/unittests/testPreReceive.py:75: trailing whitespace.
+newmock = Mock()
Makefile:41: new blank line at EOF.

我想将空格检查仅限于Python文件。这样做可以得到正确的文件:

代码语言:javascript
复制
$ git diff --name-only HEAD~1 HEAD | grep ".py"
tools/gitHooks/preReceive.py
tools/gitHooks/unittests/testPreReceive.py

但是,当我通过管道将文件名传递给'git diff --check‘(使用或不使用xargs)时,我得到了错误的输出。

代码语言:javascript
复制
$ git diff --name-only HEAD~1 HEAD | grep ".py" | xargs git diff --check HEAD~1 HEAD --
$
$ git diff --name-only HEAD~1 HEAD | grep ".py" | git diff --check HEAD~1 HEAD --
tools/gitHooks/unittests/testPreReceive.py:75: trailing whitespace.
+newmock = Mock()
Makefile:41: new blank line at EOF.

我也尝试了这个以及它的几个变体,但都没有成功:

代码语言:javascript
复制
$ git diff --check HEAD~1 HEAD -- "*.py"
$

有人能帮上忙吗?我觉得我已经接近答案了。

EN

回答 1

Stack Overflow用户

发布于 2014-07-09 05:54:01

From the original poster

结果发现我用错了grep。

代码语言:javascript
复制
$ git diff --name-only HEAD~1 HEAD | grep \.py$ | \
$ xargs git diff --check HEAD~1 HEAD --
tools/gitHooks/unittests/testPreReceive.py:75: trailing whitespace.
+newmock = Mock()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12427583

复制
相关文章

相似问题

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