如何禁用适用于 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 <command> ...
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 代码:菜单 文件 → 首选项 → 配置 → GitHub → gitAuthentication: 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 帐户凭据
Git:使用适用于 Windows 的 GitHub 客户端在 PATH 中安装 Git
如何通过 Windows Git 凭据管理器使用多个 Git 帐户