我正在开发一个应用程序,用户可以输入Git存储库,然后将其克隆到本地计算机。在某些情况下(例如Github上指向不存在仓库的URL输错了),Git客户端会提示用户输入用户名和密码。我不想要这种行为 - 我只希望Git以非零错误状态失败。非交互式错误消息是可以接受的,我只想避免密码提示导致我的应用程序挂起。
我该如何实现这一点?
我正在开发一个应用程序,用户可以输入Git存储库,然后将其克隆到本地计算机。在某些情况下(例如Github上指向不存在仓库的URL输错了),Git客户端会提示用户输入用户名和密码。我不想要这种行为 - 我只希望Git以非零错误状态失败。非交互式错误消息是可以接受的,我只想避免密码提示导致我的应用程序挂起。
我该如何实现这一点?
GIT_TERMINAL_PROMPT
环境变量为 0
,这样就不会提示您输入任何内容了。>>> git clone https://github.com/private/private.git
Cloning into 'private'...
Username for 'https://github.com':
>>> GIT_TERMINAL_PROMPT=0 git clone https://github.com/private/private.git
Cloning into 'private'...
fatal: could not read Username for 'https://github.com': terminal prompts disabled
或者可以设置 GIT_ASKPASS
环境变量 或 core.askpass
配置值 为 true
(或一个空的脚本)。
>>> git clone https://github.com/private/private.git
Cloning into 'private'...
Username for 'https://github.com':
>>> GIT_ASKPASS=true git clone https://github.com/private/private.git
Cloning into 'private'...
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/private/private.git/'
两种解决方案都有非零的退出代码。
GIT_TERMINAL_PROMPT=0
,下面的方法也可以防止凭据管理器窗口弹出:
git -c credential.helper= <其余指令>
GIT_TERMINAL_PROMPT
环境变量,这可能是一个更优雅的解决方案。 - D Malancore.askPass
、credential.helper
、GIT_ASKPASS
、SSH_ASKPASS
、GIT_TERMINAL_PROMPT
,但都没有效果。我找到的唯一有帮助的东西是GIT_SSH_COMMAND="ssh -o PasswordAuthentication=no"
。 - iliis