Git状态需要很长时间才能完成

我使用git来pipe理Windows机器上的本地目录中的文件 – 这里没有涉及到networking,我不是在推送或从另一台机器上拉出/拉出。 我的目录里可能有100个文件,所有的testing文件都很小。 当我运行git status ,通常需要20-30秒才能完成。 这是正常的吗? 有什么我可以做的,以加快它,或更好的方式来看看我的存储库的状态(更改文件,未跟踪的文件等)? 其他的git命令似乎完成得更快。

你有没有试过git gc ? 这清理了git仓库的垃圾回购。

你正在使用某种病毒防护软件吗? 也许这是干涉事情。 git对于拥有1000个文件的仓库的Windows来说非常快。

在类似的问题上,我发现在我现有的git repo下面的一个目录中有一个git repo导致了一个巨大的减速。

我把其他地方的git repo移到了别的地方,现在速度很快!

你尝试重新打包吗? git-repack 。

否则,请尝试复制目录,并删除重复目录中的.git文件夹。 然后创build一个新的git目录,看看它是否仍然很慢。

如果它仍然很慢,那么这听起来像是系统或硬件问题。 Git在不到5秒的时间内为我完成数百个文件的状态。

出于某种原因,将资源库文件夹移动或复制到新位置后, git status会特别慢。

在这种情况下后续运行通常更快。

在我的情况下,缓慢是由于作为一个不同的用户从项目中的文件的所有者运行git status引起的。

虽然在所有情况下都不适用,但是对当前用户来说,一个简单的chown可能会诀窍。

git status另一个方面将会得到改进(在Git 2.14.x / 2.15,Q4 2017),它也显示忽略的文件( git status --ignored

git status --ignored ”,当注意到没有任何跟踪path的目录被忽略时,仍然枚举目录中所有被忽略的path,这是不必要的。
代码path已经被优化以避免这种开销。

参见Jameson Miller( jamill )的 提交5aaa7fd (2017年9月18日) 。
(由Junio C gitster合并- gitster – 承诺 2017年9月29日075bc9c )

提高git status --ignored性能 – 无git status --ignored

当要列出非空的忽略目录时,改进目录列表逻辑的性能。 为了显示非空的忽略目录,现有的逻辑将recursion遍历一个被忽略的目录的所有内容。
这个改变引入了优化,一旦find第一个文件就停止迭代内容。 这可以在忽略目录中有大量文件的存储库中的“git status -ignored”性能方面有显着的改进。

有关400个被忽略目录中196,000个文件的示例资源库上的性能差异示例:

 | Command | Time (s) | | -------------------------- | --------- | | git status | 1.2 | | git status --ignored (old) | 3.9 | | git status --ignored (new) | 1.4 | 

尝试从您的结帐新鲜克隆开始。

 git clone myrepo mynewrepo 

然后在mynewrepo中做git status。

另外,如果你是勇敢的,清理垃圾从现有的结帐。

 git clean -dfx 

这避免了git不得不扫描一些(可能很大)的被忽略或未被签入的文件。