【发布时间】:2015-03-22 05:31:55
【问题描述】:
我每天要处理很多小项目,需要经常切换。
- 我在 Sourcetree 中有 50 多个 Git 存储库。
- 通常有 5 个项目在“选项卡”中打开。
从 SourceTree 中的“Tab”切换非常慢。有时长达 15 秒。我该如何改善这种行为?
【问题讨论】:
标签: git performance repository atlassian-sourcetree
我每天要处理很多小项目,需要经常切换。
从 SourceTree 中的“Tab”切换非常慢。有时长达 15 秒。我该如何改善这种行为?
【问题讨论】:
标签: git performance repository atlassian-sourcetree
TL;DR:
选项 1:(继续使用 SourceTree): SourceTree 长期彻底刷新。可以通过将过滤器设置为“已修改”来关闭。 (对我来说,我必须来回设置一次才能生效)。
选项 2:(使用 Tower/CLI 并设置 showUntrackedFiles)
选项 3:(使用 Tower/CLI 和标量)。
微软有提高repo性能的解决方案:Scalar
加长版: 大型存储库(有很多文件)有这个问题。调查并找到 SourceTree 缓慢的根本原因。
您可以在命令行中测试问题:
git status -uall
对
git status -uno
如果你发现 git status -uall 超级慢(与 SourceTree 一样慢,那么这可能是你的罪魁祸首)。
Sourcetree 在进行状态刷新时总是使用-uall。
有一种方法可以将您的 git 配置文件配置为在运行git status 时始终跳过搜索未跟踪的文件通过:
git config --local status.showUntrackedFiles no
然后问题就变成了 SourceTree 拒绝尊重这个标志(而像 Tower 这样的其他工具确实尊重它)。
可以在此处找到更多信息(在status.showUntrackedFiles 部分下):
https://git-scm.com/docs/git-config
在这里(在--untracked-files[=<mode>] 部分下):
https://git-scm.com/docs/git-status
注意:在你的 repo 的 git 配置文件中将 showUntrackedFiles 属性设置为 no 意味着当你添加一个新文件时,git status 不会拾取它,除非你使用 -uall 参数显式运行它。
【讨论】:
目前 2017 年 6 月发布的最新版本 2.1.2.5 即使在今天之前在这里尝试了所有答案之后(即使只有 1 个项目),对我来说也很慢。
显然,.gitconfig 在首次安装 SourceTree 时已写入网络驱动器 (H:)。这就是让我瞬间获得性能的原因:
将 .gitconfig 移动到本地 SSD (C:)
设置 HOME 变量。在环境变量(特别是用户变量)中,将 HOME 设置为 C: 的值(或您决定设置的任何其他路径)。
【讨论】:
通过
提高性能Use System Git 而不是 Use Embedded Git
【讨论】:
对我来说,问题是我有很多未跟踪的文件。修改了我的 .gitignore 和 SourceTree 不再慢
【讨论】:
对我来说,这是设置中的“拼写检查提交消息”选项。甚至单击刻度线也需要 20 秒才能处理,但这是我经历的最后一次冻结。
【讨论】:
如果可能,将 git 文件夹移动到 SSD 驱动器(显着提高了我的 SourceTree 性能)。
避免有大量的存储,这确实会减慢 SourceTree。
【讨论】:
执行指定的 git 命令对我来说没有用。最终真正加速 SourceTree 的是在工具 > 选项菜单中禁用“拼写检查提交消息”。我还禁用了“从 gravatar.com 加载头像图像”选项。
【讨论】:
我也有这个问题。我也有 avast,这对我有用,可能对你有用,也许对不同的 AV 有用。但我添加了 C:\Users\YOURNAME\AppData\Local\Atlassian\ 到我的 avast 排除目录,现在它运行得更快了!
【讨论】:
我的源代码树中的任何操作都非常缓慢。提交、单击文件以查看更改、推送等。
我发现我的杀毒软件 (avast) 是原因。我禁用了文件保护,源代码树立即生效。
【讨论】:
bitdefender 用于在 Mac 上测试防病毒软件,我的 ST 变得超级慢。非常感谢!!!
我知道这是一个老问题,但你也可以试试这个:
https://stackoverflow.com/a/24045966/371917
$ git config --global core.preloadindex true
$ git config --global core.fscache true
$ git config --global gc.auto 256
其次,这里有一篇解释git gc --aggressivemay not be a great idea的帖子。
【讨论】:
git,现在默认启用前两个。
这可能对其他人有所帮助。我在使用 SourceTree 1.6.x 和 git 1.9.x 时遇到了响应缓慢的问题。将 git 降级到 1.8.3 并将 SourceTree 降级到 1.5.2 解决了这个问题。
【讨论】:
源代码树票证系统有一张关于已修复的类似错误的票证。 http://www.lifehacker.com.au/2015/01/6-month-old-critical-performance-bug-with-sourcetree-is-getting-attention/
我从来没有一次使用过这么多 repos,并假设 sourcetree 不是为了在每次切换选项卡时处理这么多数据而构建的。我假设 sourcetree 需要刷新数据并从磁盘页面文件中读取和构建数据。
尝试使用更少的项目,看看你仍然有同样的问题。
如果您仍然遇到性能不足的问题,请尝试在您的存储库上运行 gc(垃圾收集器)并再次测试。
git gc --aggressive 缩小存储库大小。
【讨论】: