我注意到在最新版本的Git中,默认情况下是弹出一个" Git Credential Manager for Windows"对话框而不是每次在bash提示符下提示我输入密码。我真的很讨厌这种行为。我怎样才能禁用它并返回每次在bash shell输入密码?
顺便说一句,我不希望git以任何方式缓存我的凭据,无论是通过Windows凭据还是某些内部守护程序。我想禁用所有凭据缓存。
答案 0 :(得分:171)
好的,我发现你需要避免检查" Git Credential Manager" Git for Windows安装程序期间的复选框,或(安装后)以管理员身份运行bash shell并使用git config --edit --system
删除helper = manager
行,以便不再将其注册为凭据帮助程序。
对于奖励积分,请使用git config --edit --global
并插入:
[core]
askpass =
也要禁用OpenSSH凭据弹出窗口。
答案 1 :(得分:26)
我可以使用卸载选项卸载Windows的Git Credential Manager:
git-credential-manager.exe uninstall
在C:\Program Files\Git\mingw64\libexec\git-core
答案 2 :(得分:9)
我必须与VSTS一起使用的另一个选项:
git config credential.modalprompt false --global
答案 3 :(得分:7)
你可以:
答案 4 :(得分:6)
我遇到了这个问题,我只删除了 git-credential-manager.exe
C:\Program Files\Git\mingw64\libexec\git-core
答案 5 :(得分:6)
对我来说没用:
C:\Program Files\Git\mingw64\libexec\git-core
git-credential-manager.exe uninstall
Looking for Git installation(s)...
C:\Program Files\Git
Updated your /etc/gitconfig [git config --system]
Updated your ~/.gitconfig [git config --global]
Removing from 'C:\Program Files\Git'.
removal failed. U_U
Press any key to continue...
但是--force标志起作用了:
C:\Program Files\Git\mingw64\libexec\git-core
git credential-manager uninstall --force
08:21:42.537616 exec_cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
e
08:21:42.538616 git.c:576 trace: exec: git-credential-manager uninstall --force
08:21:42.538616 run-command.c:640 trace: run_command: git-credential-manager uninstall --force
Looking for Git installation(s)...
C:\Program Files\Git
Updated your /etc/gitconfig [git config --system]
Updated your ~/.gitconfig [git config --global]
Success! Git Credential Manager for Windows was removed! ^_^
Press any key to continue...
我可以在运行后看到该轨迹:
set git_trace=1
我还添加了git用户名:
git config --global credential.username myGitUsername
然后:
C:\Program Files\Git\mingw64\libexec\git-core
git config --global credential.helper manager
最后,我输入了以下命令:
git config --global credential.modalPrompt false
我检查ssh代理是否正在运行 -打开bash窗口以运行此命令
eval "$(ssh-agent -s)"
然后在.ssh所在的computer users / yourName文件夹中 添加连接(仍在bash中)
ssh-add .ssh/id_rsa
or
ssh-add ~/.ssh/id_rsa(if you are not in that folder)
我检查了上面添加的所有设置:
C:\Program Files\Git\mingw64\libexec\git-core
git config --list
09:41:28.915183 exec_cmd.c:236 trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-cor
e
09:41:28.917182 git.c:344 trace: built-in: git config --list
09:41:28.918181 run-command.c:640 trace: run_command: unset GIT_PAGER_IN_USE; LESS=FRX LV=-c less
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
http.sslbackend=openssl
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
credential.helper=manager
credential.modalprompt=false
credential.username=myGitUsername
当我只第一次做git push
时,我不得不添加用户名并通过。
git push
Please enter your GitHub credentials for https://myGithubUsername@github.com/
username: myGithubUsername
password: *************
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 316 bytes | 316.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
由于自git push
起,我再也没有输入我的git凭据的消息。
D:\projects\react-redux\myProject (master -> origin) (budget@1.0.0)
λ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 314 bytes | 314.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/myGitUsername/myProject.git
8d38b18..f442d74 master -> master
完成这些设置后,我也收到了一封电子邮件,内容如下:
A personal access token (git: https://myGitHubUsername@github.com/
on LAP0110 at 25-Jun-2018 09:22) with gist and repo scopes was recently added
to your account. Visit https://github.com/settings/tokens for more information.
我之所以这样说,是因为我为之努力。我希望这也会对其他人有所帮助。
答案 6 :(得分:4)
我想使用凭据管理器进行正常使用,但我有脚本,我显然不希望git.exe
提供任何提示。这就是我从脚本中调用git的方法:
set GIT_TERMINAL_PROMPT=0
git -c core.askpass= -c credential.helper= <command> ...
这样,脚本始终可以看到“正确”的无提示设置,而无需调整任何配置。
(适用于Windows 2.13.3的git)
我发现可能派上用场的变种是设置:
set GCM_INTERACTIVE=never
# or: git config --global credential.interactive never
set GIT_TERMINAL_PROMPT=0
git.exe -c core.askpass= -c credential.helper=manager <command> ...
但请注意git.exe -c credential.interactive=never <command> ...
不起作用(似乎-c
的东西没有路由到Git-Credential-Manager-for-Windows或其他任何东西。)
这样,可以使用GCMfW,但它永远不会提示您,它只会查找凭据,这在非交互式环境中非常有用。
答案 7 :(得分:3)
相当老的话题,但这可能对那些上面的提示不能解决问题的人有所帮助。
我用
git credential-manager remove -force
答案 8 :(得分:2)
为防止使用git config --global credential.modalPrompt false
对话框,会将查询驱动到控制台。
答案 9 :(得分:1)
如果:wq不像我的情况那样使用ctrl + z进行中止并退出但这些可能会使多个备份文件在以后工作 - Adeem Jan 19 at 9:14
还要确保以管理员身份运行Git!否则文件将被保存(在我的情况下)。
答案 10 :(得分:1)
我在Ubuntu(18.10)上遇到了同样的问题,无法使用任何常规方法将其删除。
我使用了git config --global --unset credential.helper
,似乎可以解决问题。
答案 11 :(得分:1)
也许是 SourceTree 。
转到工具->选项
取消选中“检查默认遥控器以获取更新[10]分钟”
重新启动SourceTree!
答案 12 :(得分:1)
如果您不想删除或卸载凭据管理器:请参阅 https://serverfault.com/questions/544156/git-clone-fail-instead-of-prompting-for-credentials/1054253#answer-1054253 了解对我有用的解决方案。
该页面中的说明等(链接以防止同一网站系列中的重复内容)。
TL;DR:它现在位于我的自动化 bash
脚本之上:
# https://serverfault.com/questions/544156/git-clone-fail-instead-of-prompting-for-credentials
export GIT_TERMINAL_PROMPT=0
# next env var doesn't help...
export GIT_SSH_COMMAND='ssh -oBatchMode=yes'
# these should shut up git asking, but only partly: the X-windows-like dialog doesn't pop up no more, but ...
export GIT_ASKPASS=echo
export SSH_ASKPASS=echo
# We needed to find *THIS* to shut up the bloody git-for-windows credential manager:
# https://stackoverflow.com/questions/37182847/how-do-i-disable-git-credential-manager-for-windows#answer-45513654
export GCM_INTERACTIVE=never
该凭证管理器棺材上的最后钉子是上述 Martin Ba 回答中的独特部分 (GCM_INTERACTIVE
):How do I disable Git Credential Manager for Windows?
答案 13 :(得分:0)
我们一直在努力解决这个问题。当我们尝试从 GIT 存储库克隆代码时,没有提示 [ Asking] 到 GIT 用户名和密码,它开始克隆代码,最终由于身份验证失败而失败。甚至没有设置凭据并且首次使用 GIT 克隆。
解决方法:运行命令,运行正常。
git config --system --unset credential.helper
答案 14 :(得分:0)
VSCode -> 首选项 -> 配置 -> github -> gitAuthentication: false。将存储库的协议从 https:// 更改为 git:// 并使用公钥认证为 git。
答案 15 :(得分:0)
如果您在使用JetBrains IDE(例如IntelliJ IDEA,PhpStorm,WebStorm,PyCharm,Rider,RubyMine,Android Studio或Goland)时注意到弹出的凭据管理器UI,请执行以下操作:
答案 16 :(得分:0)
在“用户”文件夹c:// user下,查看“ .gitconfig”文件,然后删除http和代理行。
答案 17 :(得分:0)
您可以只删除凭据管理器。
C:\ Users \\ AppData \ Local \ Programs \ Git \ mingw64 \ libexec \ git-core
答案 18 :(得分:0)
handleChange = event => {
const { formData } = this.state;
const { name, type, value, checked } = event.target;
this.setState({
formData: {
...formData,
[name]: type === "checkbox" ? checked : value,
}
})
}
这在Windows系统上有效。我测试了,对我有用。感谢分享。