如何禁用适用于 Windows 的 Git 凭据管理器?

Posted

技术标签:

【中文标题】如何禁用适用于 Windows 的 Git 凭据管理器?【英文标题】:How do I disable Git Credential Manager for Windows? 【发布时间】:2016-09-08 01:08:48 【问题描述】:

我注意到,在最新版本的 Git 中,现在默认是弹出“Windows 版 Git 凭据管理器”对话框,而不是每次在 Bash 提示符下提示我输入密码。

我真的很讨厌这种行为。我怎样才能禁用它,然后每次都在 Bash shell 中输入密码?

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

【问题讨论】:

【参考方案1】:

好的,我发现您需要避免在 Git for Windows 安装程序期间选中“Git Credential Manager”复选框,或者(在安装后)以 管理员身份运行 Bash shell 并使用git config --edit --system 删除helper = manager 行,使其不再注册为凭据助手。

对于奖励积分,请使用git config --edit --global 并插入:

[core]
    askpass =

也禁用 OpenSSH 凭据弹出窗口。

【讨论】:

感谢您的回答。对我来说,这是第一次使用编辑器。如果要保存更改,请按退出键并键入 :wq 并按 Enter(写入/保存并退出)。 非常感谢!凭证管理器对我工作的代理服务器感到困惑,这让使用 Sourcetree 成为一场噩梦。禁用它会立即解决问题。 如果 :wq 不像我的情况那样工作,请使用 ctrl+z 进行中止和退出,但这些可能会使多个备份文件稍后使用 或者用git config --system --unset credential.helper敲掉它 对于那些使用 SourceTree 的人,请确保使用的是“系统”版本的 GIT,而不是嵌入式版本。 Tools -> Options -> Git.【参考方案2】:

如果 :wq 不像我的情况那样工作,使用 ctrl+z 进行中止和退出,但这些可能会使多个备份文件稍后使用 – Adeem 1 月 19 日 9:14

还要确保以管理员身份运行 Git!否则文件将不会被保存(在我的情况下)。

【讨论】:

【参考方案3】:

我能够使用卸载选项卸载适用于 Windows 的 Git Credential Manager:

git-credential-manager.exe uninstall

C:\Program Files\Git\mingw64\libexec\git-core中运行这个命令

【讨论】:

这只是停顿,在我按 ctrl-c 后,吐出这个用法:git credential [fill|approve|reject] @ScottN 你正在运行git-credential.exe,但你需要运行git-credential-manager.exe 这是唯一适合我的解决方案。运行命令后,不再有凭据帮助程序窗口。谢谢!【参考方案4】:

我不得不与 VSTS 一起使用的另一个选项:

git config --global credential.modalprompt false

【讨论】:

谢谢!当使用 ssh 远程连接到我的生产服务器时,我发现它非常有用:由于 WCM 脱壳,我无法执行 git pull。有了这个选项,我可以享受两个世界:与服务器(或远程桌面)物理连接时的 WCM,并且能够从 ssh 客户端拉取。 谢谢!它对我有用。我已经挣扎了几个月。【参考方案5】:

我遇到过这个问题,我只从以下位置删除了 git-credential-manager.exe 文件:

C:\Program Files\Git\mingw64\libexec\git-core

【讨论】:

【参考方案6】:

我想将凭证管理器用于正常使用,但我有一些脚本,显然我不希望来自git.exe 的任何提示。这就是我从脚本中调用 Git 的方式:

set GIT_TERMINAL_PROMPT=0
git -c core.askpass= -c credential.helper= <command> ...

这样,脚本始终可以看到“正确”的无提示设置,而无需调整任何配置。

(Git for Windows 2.13.3)


我发现也可能派上用场的一个变体是设置:

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 &lt;command&gt; ... not 工作吗(似乎-c 的东西没有路由到 Windows 的 Git Credential Manager 或其他)。

这样,您可以使用 GCMfW,但它永远不会提示您;它只会查找凭据,这在非交互式环境中非常有用。

【讨论】:

【参考方案7】:

这对我不起作用:

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 所在的计算机 users/yourName 文件夹中,添加一个连接(仍在 Bash 中):

ssh-add .ssh/id_rsa

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.

【讨论】:

【参考方案8】:

我在Ubuntu 18.10(Cosmic Cuttlefish)上遇到了同样的问题,无法使用任何正常方式删除。 我使用了git config --global --unset credential.helper,这似乎可以解决问题。

【讨论】:

【参考方案9】:

用途:

C:\Program Files\Git\mingw64\libexec\git-core                                                                       
git credential-manager uninstall --force    

这适用于 Windows 系统。我测试了它,它对我有用。

【讨论】:

【参考方案10】:

也许问题出在 Sourcetree

    转到工具选项

    取消选中“每 [10] 分钟检查一次默认遥控器的更新”

    重新启动 Sourcetree!

【讨论】:

嗨@hatonooh。感谢您的提示,这帮助我找到了适合我的正确解决方案,但不是您的。在工具/选项:身份验证中,我删除了我的帐户。下次我提取我的仓库时,我提示输入密码,它重新创建了这个帐户。【参考方案11】:

您可以只删除凭据管理器。

C:\Users\<USER>\AppData\Local\Programs\Git\mingw64\libexec\git-core

【讨论】:

【参考方案12】:

在“user”文件夹下,c://user,查看“.gitconfig”文件,然后去掉HTTP和代理行。

【讨论】:

【参考方案13】:

要阻止对话,请使用git config --global credential.modalPrompt false

这会将查询驱动到控制台。

【讨论】:

【参考方案14】:

如果您注意到在使用 JetBrains IDE 时弹出凭据管理器 UI(例如 IntelliJ IDEA、phpStorm、WebStorm、PyCharm、Rider、RubyMine、android Studio 或Goland),这样做:

    在您的 IDE 中,转到菜单 文件设置版本控制Git

    禁用使用凭据助手

    别忘了按保存

【讨论】:

【参考方案15】:

对于之前回答中的提示没有解决的问题:

我用

git credential-manager remove -force

【讨论】:

【参考方案16】:

如果您不想删除或卸载凭据管理器:请参阅 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://***.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?

【讨论】:

【参考方案17】:

Visual Studio 代码:菜单 文件首选项配置GitHubgitAuthentication: false 。将存储库的协议从 https:// 更改为 git:// 并为 Git 使用公钥身份验证。

【讨论】:

这与当前版本的 Visual Studio Code (1.62.3) 不匹配。例如,“首选项”不包含“配置”(或任何接近它的东西)。您可以为更高版本的 Visual Studio Code 添加信息吗? (但没有“编辑:”、“更新:”或类似的 - 答案应该看起来好像是今天写的。)【参考方案18】:

我们在这个问题上苦苦挣扎。当我们尝试从 Git 存储库克隆代码时,没有提示(询问)Git 用户名和密码,它开始克隆代码,最终由于身份验证失败而失败。甚至没有设置凭据,并且第一次使用 Git 克隆。

解决方案:运行命令,它可以正常工作。

git config --system --unset credential.helper

【讨论】:

以上是关于如何禁用适用于 Windows 的 Git 凭据管理器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Windows 凭据管理器的情况下更改我的 git 帐户凭据

适用于 Windows 的 ConEmu 和 git

Git:使用适用于 Windows 的 GitHub 客户端在 PATH 中安装 Git

如何通过 Windows Git 凭据管理器使用多个 Git 帐户

如何使用 V2 CP 示例自定义 Windows 10 凭据提供程序?

如何暂时禁用 git http 代理