4

我想在使用简单文件模式从命令 shell运行 agit diff或 a时忽略文件。git status

我能够“仅将差异或状态应用于与此模式匹配的文件”,但我不知道怎么说“忽略与此模式匹配的文件”。

我现在正在做的将命令应用于文件子集的是:

$ git status */models.py
$ git diff */models.py

我希望能够从命令行执行此操作,而无需将首选项设置为 Git。那可能吗?

4

3 回答 3

2

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

如果您要排除的更改是您最终想要提交的好更改,那么我建议将它们添加到暂存区域。这样你就可以做到git diff,他们不会出现。

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

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

git status | grep -v stuff-to-exclude
于 2013-07-04T17:57:13.107 回答
1

您可以使用git ls-files,grep并且xargs喜欢:

git ls-files | grep -v models.py | xargs git diff
于 2013-07-04T15:45:41.567 回答
0

如“ git update-index --assume-unchangedon directory ”所示,可以使用命令进行测试和玩:

 git update-index --assume-unchanged 

这样,a git difforgit status应该忽略您刚刚标记为“未更改”的文件。

注意:要还原:git update-index --no-assume-unchanged

(如果这不能完全起作用,请尝试git update-index --skip-worktree)。

于 2013-07-04T15:15:32.763 回答