"git branch" 命令从 Git Bash 到 Windows 很慢

"git branch" command is slow from Git Bash on Windows

我只有一个分支main,但是当我执行git branch命令时,大约需要30秒才能完成。 git status 等其他命令没有此性能问题。我可以在这里查看哪些内容?

Git 版本是 2.36.0 运行 Windows 10.

更新:

Tl;博士

在 Windows 上,当 PC 在域中时,请确保可以访问域控制器。

详情

shell 和随 Git 一起分发的用于 Windows 的命令行工具派生自 MSYS2 project,它基于 Cygwin 库的一个变体.作为程序启动例程的一部分,该库会进行多次名称查找。当系统在域中注册时,此查找将转到域控制器。在无法访问域控制器的情况下,查找等待 time-outs。这会导致延迟。

查找结果由 Windows 缓存。因此短时间内,后续启动不必等待time-outs。但最终缓存过期,下一次程序调用又得等待

Git 程序 git.exe 不是 基于 Cygwin 库,不需要名称查找。它可以 运行 毫不拖延。但是,许多 Git 命令会产生寻呼机,通常是 less 确实 会受到延迟的影响;因此,似乎 Git 本身会被延迟。 (这并不重要;无论哪种方式,用户体验都很糟糕。)

除此之外,还有许多其他情况 Git 运行 是命令行工具:hooks、textconv 过滤器、ssh 等。所有这些都会受到延迟的影响。

编辑:我目前正在测试以下更改。 请 不要 对您的系统进行此更改,除非您确切知道安全隐患是什么。

我使用了mkpasswdmkgroup在本地缓存当前域信息:

mkpasswd >> /etc/passwd
mkgroup >> /etc/group

然后我从文件中删除了重复项。 (但是 /etc/group 在这些命令之前不存在。)

这个想法来自 Cygwin FAQ