gpt4 book ai didi

Git 缓慢枚举不存在的未跟踪文件

转载 作者:IT王子 更新时间:2023-10-29 01:18:06 27 4
gpt4 key购买 nike

我正在使用 git 对存储库进行源代码控制。最近它开始警告我在使用 git status 时枚举未跟踪文件需要多长时间:

$ git status
On branch my_branch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: My_Project/my_source.c


It took 3.24 seconds to enumerate untracked files. 'status -uno'
may speed it up, but you have to be careful not to forget to add
new files yourself (see 'git help status').
no changes added to commit (use "git add" and/or "git commit -a")

但是,这个存储库中没有未跟踪的文件——我用 git status -uall 检查过。其他一些可能相关的信息:

  • 我注意到此警告仅在 git status 确实需要几秒钟才能运行时出现。
  • 目前我的存储库有 130.6 MB。
  • 我的构建产品都是树外的。

为什么 git 需要这么长时间来枚举不存在的未跟踪文件?


以下是一些相关的其他问题:

最佳答案

首先,我想感谢 Sven Marnach 上面的评论,基本上是我给出了这个解决方案。

问题:我也遇到过这个问题,但我的硬盘没问题。在 SSD 驱动器上执行“git 状态”需要 3-5 秒,在磁性驱动器上需要 4-8 秒。做了几次之后就快多了。我还看到了这个关于枚举未跟踪文件的时间太长的错误,但我没有要提交的更改。

快速解决方案:删除任何被 .gitignore 文件 stash 的文件。

更好的解决方案:停止在源代码管理的同一目录中构建。

原因:Git 仍然需要遍历所有未跟踪的文件,查看是否有任何新文件,然后将它们与 .gitignore 中的条目进行交叉引用。这个错误并不是说你有文件需要 checkin ,而是说现在需要很长时间才能确定是否有文件需要 checkin 。

在干净的 checkout 中,没有要被 git ignore stash 的文件和 SSD 驱动器,运行“git status”需要 0.8 秒。

最后一点:这是一个非常古老的项目,我们有一个非常大的 .gitignore 文件。我怀疑将 100 个条目减少到一个目录中也会有所帮助,但不幸的是,我们在每个已 checkin 的输出目录中都有一些文件。

关于Git 缓慢枚举不存在的未跟踪文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28156648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com