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不得不扫描一些(可能很大)的被忽略或未被签入的文件。