我正在使用 git
管理 Windows 机器上本地目录中的文件 - 没有涉及网络,也没有推送或从另一台计算机拉取。我的目录里大概有100个文件,全部都是测试文件,相当小。每当我运行 git status
,它经常需要20-30秒才能完成。这正常吗?我能做些什么来加快它的速度,或者有更好的方法来查看我的代码库的状态(已更改的文件、未跟踪的文件等)吗?其他git
命令似乎执行得更快。
您尝试过git gc吗?这会清理git仓库中的垃圾信息。
time
命令运行了git status
,得到了30.464秒的“真实”时间。然后我运行了git gc
,再次运行time git status
,结果得到了35.409秒的真实时间。挺奇怪的。 - RyanScottLewisgit status
时,后续的运行时间只需第一次的一小部分。因此,如果您运行 git status
,然后运行 git gc
,再次运行 git status
,预计它将运行得非常快。 - kiewic你是否正在使用某种防病毒软件?这可能会干扰一些操作。Git
在Windows上对于拥有数千个文件的仓库来说非常快。
你尝试过重新打包吗?可以使用git-repack命令。
否则,可以尝试复制目录,并删除复制的目录中的.git文件夹。然后创建一个新的git目录并查看速度是否有改善。
如果速度仍然很慢,则可能是系统或硬件问题。对于我数百个文件的状态更新,Git在不到5秒内就能完成。
同样的问题在我身上也出现了,当我在一个已有git仓库的目录下放置另一个git仓库时,速度明显变慢。
我把第二个git仓库移动到别的地方后速度就快了!
对我来说,速度缓慢是由于有大量未跟踪的文件(脚本的临时和输出文件)。运行git status -uno
,它将排除未跟踪的文件,运行速度更快,并满足我的要求。
在将存储库文件夹移动或复制到新位置后,git status
会变得特别缓慢。
在这种情况下,随后的运行通常会更快。
git status
命令相同的操作,因此完成所需的时间可能是相同的。 - Lex - Boycott Slack - see bio我的git status
非常缓慢(长达一分钟),因为全局的.gitignore
文件位于我的Windows用户个人资料文件夹中,而该文件夹存储在一个不可访问的网络共享位置上。
git config --global core.excludesfile
显示类似于 \\Nxxxx0\User\Username\Eigene Dateien\gitignore_global.txt
由于某种原因,\\Nxxxx0
是不可访问的,我的用户个人资料文件夹是从备份系统 \\Nxxxxx1
加载的。花了一些时间才发现这个问题,因为通常我的用户个人资料文件夹会通过企业启动脚本绑定到一个驱动器号,而访问该驱动器号通常也能像往常一样工作。我不确定为什么git-config使用了网络共享位置,而不是驱动器号(可能是年轻时犯下的错误)
设置完成后git config --global core.excludesfile $HOME/Eigene\ Dateien/gitignore_global.txt
git status
回复了正常速度。
经常由于大量未跟踪的文件,git速度非常慢。
可以尝试以下方法:
git status -uno
较旧版本的git在执行git status时存在性能问题-更多信息请参见提高git状态性能的方法。
git 2.13有1个修复程序,2.17有更多修复程序。我从2.7升级到2.23,解决了缓慢的状态。还计划在2.24中进行另一项改进。
git status
中的 "未跟踪的文件和性能"。 - VonCgit status
命令查看 "未跟踪的文件和性能"。 - undefined