Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用git diff仅处理diff.cs文件_Git - Fatal编程技术网

如何使用git diff仅处理diff.cs文件

如何使用git diff仅处理diff.cs文件,git,Git,我尝试仅区分.cs文件,我使用: 吉特压头--./*.cs 它就是不起作用。注意,在不同的目录下有几个cs文件。 正确的命令是什么 谢谢 我在windows中使用msysgit。我决定为它编写一个python脚本。这是: import os screenOutput = os.popen('git status').read() lines =screenOutput.splitlines() keyword = 'modified:' cmd = 'git diff HEAD -- ' fo

我尝试仅区分.cs文件,我使用: 吉特压头--./*.cs 它就是不起作用。注意,在不同的目录下有几个cs文件。 正确的命令是什么

谢谢


我在windows中使用msysgit。我决定为它编写一个python脚本。这是:

import os
screenOutput = os.popen('git status').read()
lines =screenOutput.splitlines()
keyword = 'modified:'
cmd = 'git diff HEAD -- '
for line in lines:
    index = line.find(keyword)
    if(index >= 0):
        line = line[index + len(keyword) + 1:].strip()
        if(line.endswith('.cs')):
            cmd += (line + ' ')
os.system(cmd)     

脚本捕获“git status”输出,搜索带有关键字“modified:”的行,并获取修改后的文件名。很难看。但它是有效的。它可以被扩展以处理参数。

我可以尝试
git diff HEAD--$(find.-name'*.cs')
这样您就可以为它提供每个参数的完整路径。不确定这是否会起作用,但它可能会起作用。

git diff**/*.cs
为我做了。

git diff HEAD--“*.cs”
应该起作用。

这可能是bash 4特有的,因为当时才添加了
**
glob。但它应该可以在zsh中工作。这在windows上的MSysGit中不起作用。他们对bash的实现相当于bash4之前的东西。啊,好吧。我使用zsh,它支持文件路径中的globs。这也许可以解释为什么它不适用于msysgit和基于Bash的旧shell。如果您尝试对git diff head~5 head执行此操作,它将找不到任何在head之前删除并与所需模式匹配的.cs文件。这是一个很好的观点。一个更完整的答案可能涉及某种shell脚本,它解析
git日志
,并以这种方式获取差异目标。这个问题似乎更像是“查找所有未老化/未提交的.cs文件并显示差异”,所以这就是我的答案towards@MattBusche请注意,我建议的命令与OP中的命令略有不同。@MattBusche还请注意,我刚刚编辑了我的答案,但我建议的命令仍然与OP略有不同。