如何禁用Windows的Git Credential Manager?

时间:2016-05-12 09:32:08

标签: git bash

我注意到在最新版本的Git中,默认情况下是弹出一个" Git Credential Manager for Windows"对话框而不是每次在bash提示符下提示我输入密码。我真的很讨厌这种行为。我怎样才能禁用它并返回每次在bash shell输入密码?

顺便说一句,我不希望git以任何方式缓存我的凭据,无论是通过Windows凭据还是某些内部守护程序。我想禁用所有凭据缓存

19 个答案:

答案 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)

你可以:

  1. win + R,输入“compmgmt.msc”,
  2. 选择“服务和应用” - > “服务”
  3. 找到Credentials manager,
  4. 将启动类型更改为已禁用,将其停止,应用并确定

答案 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

  1. 转到工具->选项

  2. 取消选中“检查默认遥控器以获取更新[10]分钟”

  3. 重新启动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,请执行以下操作:

  1. 在您的IDE中,转到文件|设置|版本控制| Git

  2. 禁用使用凭据助手Disable "Use credential helper"

  3. 别忘了按保存

答案 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系统上有效。我测试了,对我有用。感谢分享。