"Git Bash here" 启动时间过长 (还包括 MSYS2 bash 终端)。

3
当我连接到公司VPN时,“Git bash here”需要1分钟才能启动。 "ls"命令或任何其他MSYS2 Linux命令也需要1分钟。
如果我没有连接VPN,一切都正常。
连接VPN时,我从Windows 10 cmd行执行“bash”,需要1分钟才能打开bash。我关闭bash并再次输入“bash”,命令立即执行。但是,如果等待2到3分钟并执行“bash”,则再次需要1分钟才能执行。
我已经搜索并尝试了许多解决方案,但都没有对我起作用: 我尝试了这个:Git Bash is extremely slow on Windows 7 x64和这个https://cygwin.com/faq.html#faq.using.startup-slow,以及其他一些方法,但都没有起作用。
当VPN处于活动状态时,我怀疑出现了DNS问题。但我尝试手动更改DNS并未解决问题。
我还测试了独立的MSYS2版本msys2-x86_64-20210228,并移除了GIT:同样的问题!无论是bash还是任何其他MSYS2命令都有此问题。如果未连接VPN,则bash窗口会立即打开,但在连接到VPN后第一次打开需要55秒。

我的系统:

  • Git版本2.31.1.windows.1
  • Windows 10(10.0.19041 Build 19041)
  • msys2-x86_64-20210228

1
如果您能提及git和操作系统的版本,将有助于其他人。 - undefined
如果计算机处于离线状态,一切都正常运行。这个也没有帮助:https://stackoverflow.com/questions/66716650/launching-msys2-mingw-64-is-very-slow-when-the-computer-is-offline - undefined
你的git远程仓库托管在哪里?例如GitHub、私人公司服务器、GitLab等。你用什么协议进行服务器认证?我看到Git-Bash支持GitHub。我不确定,但是可能Git-Bash在启动时尝试与GitHub进行身份验证——我想现在有一个独立的身份验证/凭据助手插件;而且你们公司的VPN可能会阻止GitHub导致速度变慢。(免责声明:我不使用Windows,只是根据观察其他人的情况来说) - undefined
窗口启动了吗?你能改变你的$HOME/.bashrc并以echo "请稍等,正在执行 .bashrc。"开始吗? - undefined
你能检查一下当你激活VPN时,防病毒软件是否变为活动状态吗? - undefined
显示剩余2条评论
1个回答

5

我在这里找到了解决方案:https://gist.github.com/k-takata/9b8d143f0f3fef5abdab,使用第二个解决方案:

对于 Git for Windows

  1. 连接VPN
  2. 在连接VPN的情况下更新密码和组。以管理员身份打开命令提示符,进入C:\Program Files\Git\usr\bin

并执行此操作(由于您已连接到 VPN,可能需要一段时间):

> mkpasswd -l -c > ../../etc/passwd
> mkgroup -l -c > ../../etc/group
  1. 接下来,在/etc/nsswitch.conf文件中注释掉"db":

在管理员命令行中执行:

> notepad ..\..\etc\nsswitch.conf

注释掉"db":

# Begin /etc/nsswitch.conf
passwd: files #db
group: files #db

针对MSYS2

  1. 连接到 VPN
  2. 在连接到 VPN 的情况下更新密码和组。从 MSYS bash 控制台执行以下操作:

执行此命令:

$ mkpasswd -l -c > /etc/passwd
$ mkgroup -l -c > /etc/group
  1. 然后,在 /etc/nsswitch.conf 文件中注释掉 "db":

C:\msys64\etc\nsswitch.conf:

# Begin /etc/nsswitch.conf
passwd: files #db
group: files #db

在链接中有一些针对此解决方案的评论:
  • 这只适用于执行mkpasswd / mkgroup的用户
  • /etc/nsswitch.conf在每次Git for Windows或MSYS2升级时都会被替换

在问题中给出的链接中提供了一个类似的解决方案,但没有很好地解释如何更新mkpasswdmkgroup - undefined
不管出于什么原因,使用MSYS和Git生成的passwd和group文件是相似的,但并非完全相同。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接