82

我需要禁用 OS X 的凭证助手:git credential-osxkeychain

它在全局配置文件和本地配置文件中都被禁用,实际上它从未被启用。尽管如此,它仍然会记住我的 github 登录详细信息。
我在笔记本电脑上,所以我不希望自动无密码访问我的存储库。
使用 ssh 密钥。这是一台新计算机,整个系统设置仍在进行中。
现在我使用了httpsrepo refs,并且凭证助手不断发挥作用。

这些是我的 conf 文件:


git config --edit=>

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    url = https://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "develop"]
    remote = origin
    merge = refs/heads/develop
[branch "deploy"]
    remote = origin
    merge = refs/heads/deploy

git config --global --edit=>

[user]
    email = ****************
    name = tom
[color]
    ui = true
[core]
    editor = subl -w
[github]
    user = tompave
[merge]
    conflictstyle = diff3
[push]
    default = simple

此外,运行git config --global credential.helper不会返回任何内容(没错)。

但是,运行git config credential.helper返回osxkeychain

这怎么可能?我在本地配置文件中看不到它,它在哪里设置?

我尝试在本地设置它以查看会发生什么,它确实出现在repodir/.git/config. 然后我删除了该条目......但助手仍然在这里并且处于活动状态。

我可以清楚地看到它在 OS X 钥匙串中的条目。
我可以删除它,然后git会再次要求输入密码......但是只要我输入它(比如说,对于 a git fetch),钥匙串中的条目就会恢复。

4

5 回答 5

130

为了帮助追踪设置,我会尝试使用:

git config --local credential.helper
git config --global credential.helper
git config --system credential.helper

第一个检查本地 repo 配置,第二个是 your ~/.gitconfig,第三个是基于 git 的安装位置。根据哪个返回显示凭证助手,您可以尝试使用等效--unset选项:

git config --local --unset credential.helper
git config --global --unset credential.helper
git config --system --unset credential.helper

如果您没有适当的权限,最后一个可能不起作用。因此,您可能需要运行最后一个sudo才能使其正常工作。FWIW,您可能已经为 Mac OS X 的预构建 git 映像安装了。如果您使用 cat /usr/local/git/etc/gitconfig(或者/usr/local/etc/gitconfig如果您通过 Homebrew 或本地建筑物安装 git),您会看到它确实为您设置了凭证助手。所以上面的最后一个命令将有助于解决这个问题。

于 2013-04-17T07:47:53.157 回答
69

其他答案非常有帮助。credential.helper 没有在任何列表中显示(指定--local、--global 等),它总是显示在“git config -l”上。使用 --show-origin 命令表明它来自特定于 OS X 的文件。

$ git config --show-origin --get credential.helper
file:/Applications/Xcode.app/Contents/Developer/usr/share/git-core/gitconfig    osxkeychain
于 2016-12-17T04:57:33.813 回答
14

在我的情况下,它更容易运行:

git config --get-all --show-origin credential.helper

输出完整列表,包括配置文件路径:

file:/Library/Developer/CommandLineTools/usr/share/git-core/gitconfig   osxkeychain
file:/Users/yourname/.gitconfig !aws codecommit credential-helper $@

然后打开配置文件:

sudo vim /Library/Developer/CommandLineTools/usr/share/git-core/gitconfig

并注释掉该行credential.helper=osxkeychain

于 2020-08-18T21:31:03.370 回答
8

注意:在GitHub中,密码被弃用以支持令牌,这个问题可能会再次出现在许多用户身上。
在我的情况下(macos 11.5 BigSur),命令行配置git config --unset credential.helper没有帮助,本地、全局或系统级别的任何变化也没有帮助。来自 GitHub的帮助也没有解决问题。

解决方案是:

  1. git config --get-all --show-origin credential.helper如上面Kim T所述,使用 查找配置文件。您可能会得到并输出如下:
    file:/usr/local/git/etc/gitconfig osxkeychain
    file:/Users/XYZ/.gitconfig osxkeychain

  2. 如果您像我一样是 macos 新手,您可能需要导航到文件位置。只需从上面的命令复制每个输出show-origin,转到 Finder,然后在转到菜单中选择“转到文件夹”,然后粘贴文件位置。

  3. 在每个配置文件中,注释掉osxkeychain,如下所示:
    [credential]
    helper = osxkeychain
    应该变为
    #[credential]
    # helper = osxkeychain
    您可能需要获得编辑文件的权限。在命令行中编辑时使用sudo,或者在 Finder 中右键单击文件时转到菜单上的“获取信息”。

  4. 然后从回购中推或拉。系统会再次要求您输入密码,但现在应该提供您的个人访问令牌

瞧,魔术应该发生。

于 2021-08-19T08:30:42.413 回答
3

配置本身 ( git config --unset credential.helper) 是不够的。
确保也终止任何git-credential-osxkeychain进程(如此处所述),或查看重启后问题是否仍然存在。

此外,在使用 GitHub for Mac 时,请检查此工具内部是否使用了配置。
请记住,git config仅此一项就会检查系统、全局和本地配置文件。

注意:使用 git 2.9,您可以简单地将其设置credential.helper为“空字符串”以禁用它:请参阅“如何为单个存储库禁用 git 的凭据帮助程序? ”。

于 2013-04-17T06:16:03.613 回答