我正在使用git
来管理Windows机器上本地目录中的文件 - 这里不涉及任何网络,我不是推送或拉出另一台机器。我的目录中可能包含100个文件,所有测试文件都非常小。当我运行git status
时,通常需要20-30秒才能完成。这是正常的吗?有什么我可以做的加快速度,或者更好的方式来查看我的存储库的状态(更改的文件,未跟踪的文件等)?其他git
命令似乎完成得更快。
答案 0 :(得分:99)
您是否尝试过 git gc ?这清除了git repo中的残余。
答案 1 :(得分:7)
您使用的是某种病毒防护软件吗?也许这会干扰事情。 git
对于我来说非常快,在拥有1000个文件的存储库的窗口上。
答案 2 :(得分:6)
在一个类似的问题上,我发现在我现有的git repo下面的目录中有一个git repo会导致大幅减速。
我将辅助git repo移动到其他地方,现在速度很快!
答案 3 :(得分:4)
由于某些原因,将存储库文件夹移动或复制到新位置后 div.sidebar {
position: absolute;
width: 250px;
height: 100%;
z-index: 99;
background-color: black;
}
特别慢。
在这种情况下,后续运行通常会更快。
答案 4 :(得分:3)
你尝试过重新包装吗? git-repack
否则,请尝试复制目录,并删除重复目录中的.git文件夹。然后创建一个新的git目录,看看它是否仍然很慢。
如果它仍然很慢,那么这听起来像是系统或硬件问题。 Git在不到5秒的时间内完成了数百个文件的状态。
答案 5 :(得分:3)
对我来说,之所以缓慢,是因为有许多未跟踪的文件(脚本中的临时文件和输出文件。)运行git status -uno
,它将未跟踪的文件排除在外,运行速度更快,并且符合我的要求
答案 6 :(得分:2)
对我来说,问题是我将很多不同的存储库克隆到我的本地硬盘驱动器上,你拥有的存储库越多,运行git status等命令所需的时间越长。
我只是删除了很多本地不再需要的回购,我的git状态从1分钟到5秒。
我在这里看不到任何类似的答案。
答案 7 :(得分:1)
git status
的另一个方面是改进(在Git 2.14.x / 2.15,2017年第4季度),它同时显示被忽略的文件(git status --ignored
)
“
git status --ignored
”,注意到没有任何目录 跟踪路径被忽略,仍然枚举所有被忽略的路径 目录,这是不必要的 代码路径已经过优化,以避免这种开销。
commit 5aaa7fd见Jameson Miller (jamill
)(2017年9月18日)
(Junio C Hamano -- gitster
--合并于commit 075bc9c,2017年9月29日)
提高
的效果git status --ignored
当要列出非空的忽略目录时,提高目录列表逻辑的性能。为了显示非空的忽略目录,现有逻辑将递归迭代忽略目录的所有内容 此更改引入优化,以便在找到第一个文件后停止迭代内容。这可以显着提高存储库中“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 2.17,2018年第二季度中设置),请参阅this answer。
答案 8 :(得分:1)
我的git status
非常慢(最多一分钟),因为全局.gitignore
文件位于我的windows userprofile中,该文件存储在无法访问的网络共享中。
git config --global core.excludesfile
显示类似\\Nxxxx0\User\Username\Eigene Dateien\gitignore_global.txt
由于某种原因\\Nxxxx0
无法访问,我的用户配置文件是从备份系统\\Nxxxxx1
加载的。花了一些时间来解决这个问题,因为通常我的userprofile被企业启动脚本绑定到驱动器号,访问该驱动器号就像往常一样工作。
我不确定为什么git-config使用网络共享而不是驱动器号(可能是一个年轻的我应该受到责备)
设置后git config --global core.excludesfile $HOME/Eigene\ Dateien/gitignore_global.txt
git status
恢复正常速度。
答案 9 :(得分:1)
运行git fsck
过去已经为我解决了这个问题。
答案 10 :(得分:0)
就我而言,由于git status
作为与项目中文件所有者不同的用户运行,导致速度缓慢。
虽然不适用于所有实例,但对当前用户来说,简单的chown
可能会有所帮助。
答案 11 :(得分:0)
较旧版本的git的git状态存在性能问题-有关更多信息,请参见Ways to improve git status performance。
git 2.13有1个修复,而其他2.17个已修复。我从2.7移到2.23,它解决了慢速状态。计划在不久的将来完成2.24的另一项改进。
答案 12 :(得分:0)
就我而言,这个 git 目录中有一个巨大的 ZIP 文件。 *.zip
也是 .gitignore
文件中的一行:
CMakeCache.txt
CMakeFiles
Makefile
cmake_install.cmake
[...]
*.csv
*.zip
[...]
我已将此 zip 文件 (~915 MB) 移至其他文件夹,这解决了问题。
答案 13 :(得分:-10)
尝试从结帐的新克隆开始。
git clone myrepo mynewrepo
然后在mynewrepo中执行git状态。
或者,如果您更勇敢,请清理现有结帐中的垃圾。
git clean -dfx
这可以避免git必须扫描一些(可能很大的)被忽略或未签入的文件。