git快速检测是否有未跟踪的文件

git快速检测是否有未跟踪的文件,git,Git,是否有一种方法可以快速检测是否存在任何未跟踪的文件 我可以接受 但是,如果有许多未跟踪的文件,这会很慢。是否存在类似于退出状态确定是否存在任何未跟踪文件的git diff-q 示例输出: remco@Prosperpine ~/code/Sick-Beard (master) $ git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will b

是否有一种方法可以快速检测是否存在任何未跟踪的文件

我可以接受


但是,如果有许多未跟踪的文件,这会很慢。是否存在类似于退出状态确定是否存在任何未跟踪文件的
git diff-q

示例输出:

remco@Prosperpine ~/code/Sick-Beard (master) $ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   init.osx
nothing added to commit but untracked files present (use "git add" to track)
remco@Prosperpine~/code/Sick Beard(主)$git状态
#论分行行长
#未跟踪的文件:
#(使用“git add…”包含在将提交的内容中)
#
#init.osx
提交时未添加任何内容,但存在未跟踪的文件(使用“git add”跟踪)

如果您看到第一个未跟踪的文件时得到了所需内容,请立即退出

如果你在GNU/任何东西上

git ls-files --other --directory --exclude-standard | sed q1
如果有,将设置rc1

否则,

anyuntracked() {
    return `git ls-files -o --directory --exclude-standard | sed q | wc -l`
}
anyuntracked

将做同样的工作

我认为
git ls文件
仍然比
git status
快是的,事实上你是对的!我在100000个新文件的测试集上对这两个命令进行了计时
git状态
采用
real:0m0.927s
,而
ls文件
仅采用
real:0m0.468s
。(答案不多,但可能很好了解)要获得更符合
git状态的结果,请添加
——无空目录
。我认为这根本不起作用。如果您对该命令进行基准测试,那么无论是否使用sed,它的速度都完全相同。我怀疑git在所有文件都可用之前不会刷新输出。@user3467349我认为填充缓冲区所需的几十个文件名不会增加足够的时间来打扰很多人,他说“很多”,但是,如果您有一些奇怪的布局,将一些未跟踪的文件分散到许多目录或其他地方,则总是会使用
stdbuf
命令强制对ls文件stdout进行行缓冲。
-d
将返回已删除文件的列表;它不是目录的同义词,谢谢!固定的。
anyuntracked() {
    return `git ls-files -o --directory --exclude-standard | sed q | wc -l`
}
anyuntracked