【发布时间】:2012-06-16 18:56:12
【问题描述】:
有没有办法快速检测是否有未跟踪的文件?
我可以list all of the untracked files
git ls-files --other --directory --exclude-standard
但是如果有很多未跟踪的文件,这会很慢。有没有像git diff -q 这样的退出状态决定是否存在任何未跟踪的文件?
【问题讨论】:
标签: git
有没有办法快速检测是否有未跟踪的文件?
我可以list all of the untracked files
git ls-files --other --directory --exclude-standard
但是如果有很多未跟踪的文件,这会很慢。有没有像git diff -q 这样的退出状态决定是否存在任何未跟踪的文件?
【问题讨论】:
标签: git
git status 将通知您任何未跟踪的文件。
示例输出:
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)
【讨论】:
git ls-files还是比git status快
git status 占用了real:0m0.927s,而ls-files 只占用了real:0m0.468s。 (答案不多,但也许很高兴知道)
如果您在看到第一个未跟踪的文件时得到了想要的结果,请立即退出。
如果你在 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 status的结果,请添加--no-empty-directory。
stdbuf 命令来强制在 ls-files 标准输出上进行行缓冲。
-d 将返回已删除文件的列表;它不是--directory的同义词