我想在使用简单文件模式从命令 shell运行 agit diff
或 a时忽略文件。git status
我能够“仅将差异或状态应用于与此模式匹配的文件”,但我不知道怎么说“忽略与此模式匹配的文件”。
我现在正在做的将命令应用于文件子集的是:
$ git status */models.py
$ git diff */models.py
我希望能够从命令行执行此操作,而无需将首选项设置为 Git。那可能吗?
我想在使用简单文件模式从命令 shell运行 agit diff
或 a时忽略文件。git status
我能够“仅将差异或状态应用于与此模式匹配的文件”,但我不知道怎么说“忽略与此模式匹配的文件”。
我现在正在做的将命令应用于文件子集的是:
$ git status */models.py
$ git diff */models.py
我希望能够从命令行执行此操作,而无需将首选项设置为 Git。那可能吗?
没有标准的方法,也没有命令行标志来做到这一点。
如果您要排除的更改是您最终想要提交的好更改,那么我建议将它们添加到暂存区域。这样你就可以做到git diff
,他们不会出现。
另一方面,如果您要排除的更改是您可能不想提交的糟糕的实验性更改,那么将它们添加到暂存区域可能会很危险,因为这样很容易错误地提交。在这种情况下,最好将所有好的更改添加到暂存区域并使用git diff --cached
.
至于从状态中排除,我建议简单grep -v
:
git status | grep -v stuff-to-exclude
您可以使用git ls-files
,grep
并且xargs
喜欢:
git ls-files | grep -v models.py | xargs git diff
如“ git update-index --assume-unchanged
on directory ”所示,可以使用命令进行测试和玩:
git update-index --assume-unchanged
这样,a git diff
orgit status
应该忽略您刚刚标记为“未更改”的文件。
注意:要还原:git update-index --no-assume-unchanged
。
(如果这不能完全起作用,请尝试git update-index --skip-worktree
)。