使用命令行忽略git diff或git status中的文件

4
我希望能在命令行中使用简单的文件模式,从而在运行git diffgit status时忽略一些文件。
我可以“将差异或状态应用于与此模式匹配的文件”,但我不知道如何说“忽略与此模式匹配的文件”。
目前,我为了将命令应用于文件子集而执行以下操作:
$ git status */models.py
$ git diff */models.py

我希望能够在命令行中完成此操作,而不需要设置Git的首选项。这是否可能?
3个回答

2

没有标准的方法,也没有命令行标志可以做到这一点。

如果您想要排除的更改是您最终想提交的更改,则建议将它们添加到暂存区。这样,您可以执行git diff,它们就不会显示出来。

另一方面,如果您想要排除的更改是糟糕的实验性更改,您可能不想提交它们,那么将它们添加到暂存区可能是危险的,因为这样它们很容易被错误地提交。在这种情况下,最好将所有的更改添加到暂存区,并使用git diff --cached查看其差异。

至于从状态中排除,我建议简单地使用grep -v

git status | grep -v stuff-to-exclude

1
您可以像这样使用git ls-filesgrepxargs

git ls-files | grep -v models.py | xargs git diff

0
如 "git update-index --assume-unchanged on directory" 所示,您可以测试和使用该命令:
 git update-index --assume-unchanged 

这样一来,git diffgit status 命令应该会忽略你标记为“未更改”的文件。

注意:要撤销这个设置,请使用命令:git update-index --no-assume-unchanged

(如果上述方法不能完全达到效果,请尝试git update-index --skip-worktree命令)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接