Отключить git credential-osxkeychain

Мне нужно отключить помощник учетных данных для OS X: git credential-osxkeychain

Он отключен как в глобальном конфигурационном файле, так и в локальном, фактически он никогда не включался. Тем не менее, он продолжает запоминать мои данные для входа в GitHub.
Я на ноутбуке, поэтому я не хочу автоматического доступа без пароля к своим репозиториям.
Я буду использовать ключи SSH. Это новый компьютер, и вся настройка системы все еще находится в стадии разработки.
Сейчас я использовал https ссылки на репо, и помощник по учетным данным продолжает пинать.

Это мои файлы 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 снова запросит пароль... но как только я наберу его (скажем, для git fetch), запись в связке ключей восстановлена.

6 ответов

Решение

Чтобы помочь отследить настройку, я бы попробовал использовать:

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

Первый проверяет локальный конфиг репо, второй ваш ~/.gitconfigи третий основан на том, где установлен git. В зависимости от того, кто возвращается с помощником по учетным данным, вы можете попробовать использовать эквивалентный --unset опция:

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

Последний может не работать, если у вас нет соответствующих прав. Так что вам может понадобиться запустить последний под sudo чтобы он работал правильно. FWIW, вы, возможно, установили предварительно подготовленные образы git для Mac OS X. /usr/local/git/etc/gitconfig (или же /usr/local/etc/gitconfig если вы установили git через Homebrew или здание локально), вы увидите, что он настроил для вас помощник по учетным данным. Поэтому последняя команда, приведенная выше, поможет решить эту проблему.

Другие ответы были очень полезны. 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

В моем случае запустить было проще:

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

Примечание: в 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. Затем нажмите или вытащите из репо. Вам снова будет предложено ввести пароль, но теперь вы должны предоставить свой личный токен доступа .

И вуаля, должно произойти волшебство.

Сам конфиг (git config --unset credential.helper) не достаточно.
Убедитесь, что убили любого git-credential-osxkeychain процесс (как описано здесь), а также посмотреть, сохраняется ли проблема после перезагрузки.

Кроме того, при использовании GitHub для Mac, проверьте, есть ли конфигурация, используемая внутренне этим инструментом.
Помни что git config один будет проверять системный, глобальный и локальный конфигурационный файл.

Примечание: с помощью git 2.9 вы можете просто установить credential.helper в "пустую строку", чтобы отключить ее: см. " Как отключить помощник по учетным данным в git для одного репозитория? ".

В MacOS 12.1 ни один изunsetкоманды сделали свое дело.

Однако сработало следующее:

      git config --add credential.helper ""

Что позволило запретить git хранить пароль в связке ключей.

Другие вопросы по тегам