如何执行“git status”命令,而不使用.gitignore文件来隐藏未跟踪的文件?

371

我如何执行git status命令,使其在不使用.gitignore的情况下不显示未跟踪的文件?我只想获取已跟踪文件的修改状态信息。


每个用户的偏好都会不同,但您可以比较3个不同状态调用的输出,这可能会激发您编写脚本解决方案的灵感。 vimdiff <(git status --untracked-files=no) <(git status) <(git status --untracked-files) - Bruno Bronosky
3个回答

579

使用这个:

git status -uno

等同于:

git status --untracked-files=no

虽然在手册中有点难找,但是status命令的man页上写着“支持与git-commit相同的选项”,所以你需要去查看git-commit的文档。


1
你把这个写在哪里?是在终端还是文件里? - FrenkyB
1
这是一个命令行操作,而不是git配置文件编辑。 - Ross Rogers
如果我已经执行了 "git reset --hard <commit id>",然后我执行 "git status -uno",什么也没有显示出来,只有未跟踪的文件显示。 - Snowbases
有趣的是,这与 git status --no-untracked-files 不同 :D - Fritz
@Fritz,你能解释一下有什么区别吗? - Ivan Dimitrov
@IvanDimitrov:我不知道--no-untracked-files是什么意思,而且我在网上也找不到任何相关信息(对我来说它没有任何作用)。但是当你在终端中输入git status --no-,然后按下Tab Tab,它会建议使用--no-untracked-files选项。这似乎表明它应该有所作为,而且如果你给它这个选项,git也不会抱怨。但是正如我所说,它似乎没有任何作用。 - Fritz

141
同时:
git config status.showuntrackedfiles no

9
对于像家目录中的点文件这样始终存在未跟踪文件的存储库而言,这非常好。 - Dave
18
Dave,也许在.gitignore中列出“已知未知”是最好的方法,而你可能希望看到突然出现的“未知未知”。 - Ross Rogers

19
请注意,自 git 1.8.3 (2013年4月22日) 起,即使您没有首先添加该选项,您也将了解到 --untracked-files=no

git status 命令执行时间过长时,建议用户考虑使用 --untracked-files=no 选项。

请参见 commit https://github.com/git/git/commit/5823eb2b28696bf0eb25f6ca35b303447869f85

在某些存储库中,用户会遇到 "git status" 命令执行时间过长的问题。
该命令会花费一些时间搜索未跟踪的文件。

在讨论配置变量之前,请解释默认选择 normal 的权衡取舍,以帮助用户做出更合适的选择。

git status文档现在说明:

当不使用-u选项时,会显示未跟踪的文件和目录(即与指定normal相同),以帮助您避免忘记添加新创建的文件。
因为在文件系统中查找未跟踪的文件需要额外的工作,在大型工作树中可能需要一些时间。
您可以使用no使git status更快地返回,而不显示未跟踪的文件

可以使用git config中记录的status.showUntrackedFiles配置变量更改默认设置。


2
@Tshepang 谢谢。我已经编辑了答案,包括正确的链接,并添加了引入该更改的确切提交。 - VonC
我对git不熟 - 请问您能告诉我在哪里输入这些命令以防止未跟踪的文件显示吗?我已经尝试在终端中输入了,但是未跟踪的文件仍然显示。 - FrenkyB
@FrenkyB 你在终端里确切地输入了什么(顺便问一下,你用的是哪个操作系统?以及你使用的是哪个git版本?) - VonC
操作系统 = Windows 10 Pro,Source Tree 版本 = 1.9.10.0,我该如何检查 GIT 版本?我在终端中输入的是:git commit -u --untracked-files=no。但我仍然可以在 Source Tree 中看到这些文件。 - FrenkyB

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