我正在使用 git
管理 Windows 机器上本地目录中的文件 - 没有涉及网络,也没有推送或从另一台计算机拉取。我的目录里大概有100个文件,全部都是测试文件,相当小。每当我运行 git status
,它经常需要20-30秒才能完成。这正常吗?我能做些什么来加快它的速度,或者有更好的方法来查看我的代码库的状态(已更改的文件、未跟踪的文件等)吗?其他git
命令似乎执行得更快。
*.zip
是.gitignore
文件中的一行:CMakeCache.txt
CMakeFiles
Makefile
cmake_install.cmake
[...]
*.csv
*.zip
[...]
我已将这个大小约为915MB的zip文件移动到其他文件夹中,这解决了问题。
/etc/ssh/ssh_config
文件,以便包含以下行:AddressFamily inet
git pull
和git push
仍然需要很长时间。git pull
和git push
都有效。git pull -4
git push -4
git status
。
另外,在 git status
显示被忽略的文件时(git status --ignored
),Git 2.14.x/2.15(2017年第四季度)中将改进其它方面。
当发现一个没有任何跟踪路径的目录被忽略时,"
git status --ignored
" 仍然会枚举该目录中所有被忽略的路径,这是不必要的。
代码路径已经优化,以避免这种开销。
请查看提交5aaa7fd(2017年9月18日)由Jameson Miller(jamill
)进行。
(由Junio C Hamano -- gitster
--在提交075bc9c中合并,2017年9月29日)
优化目录列表逻辑以提高非空忽略目录的性能。为了显示非空忽略目录,现有逻辑将递归遍历所有被忽略目录的内容。改善
git status --ignored
的性能
以下是具有196,000个文件和400个被忽略目录的示例存储库的性能差异示例:
| 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。
node_modules
可能会受到这个性能变化的影响。也许吧。 - Seth Battingit status
导致的。我不完全确定这为什么会是这种情况,但我在使用Git LFS的repo时遇到了这个问题,因为没有安装git-lfs。我之前没有安装它是因为我实际上不需要任何文件,但安装git-lfs解决了我的速度问题。
git status
。如果您的存储库已检出到不同的目录中,每次只能为其中一个运行 git status
。如果您的 git 存储库重叠,那可能是个不同的故事,但这本来就是个坏主意。 - Hubert Grzeskowiak尝试使用您的检出的新克隆开始。
git clone myrepo mynewrepo
然后在我的新存储库中执行git状态。
或者,如果你更勇敢一些,可以清理现有检出中的垃圾。
git clean -dfx
这样可以避免Git扫描一些被忽略或未检入的文件,其中可能包含大量数据。
git status
中的 "未跟踪的文件和性能"。 - VonCgit status
命令查看 "未跟踪的文件和性能"。 - undefined