Отключить 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 тоже не решила.
Решение было:
найдите файлы конфигурации, используя
git config --get-all --show-origin credential.helper
, как упоминалось выше Kim T Вы, вероятно, получите и выведете примерно так:
file:/usr/local/git/etc/gitconfig osxkeychain
file:/Users/XYZ/.gitconfig osxkeychain
Если вы, как и я, новичок в macos, вам может потребоваться перейти к местоположению файла. Просто скопируйте каждый вывод из
show-origin
выше, перейдите в Finder и в меню «Перейти» выберите «Перейти в папку», затем вставьте местоположение файла.в каждом из конфигурационных файлов закомментируйте osxkeychain , как показано ниже:
[credential]
helper = osxkeychain
должен стать
#[credential]
# helper = osxkeychain
Возможно, вам потребуется получить разрешения для редактирования файлов. Либо используйтеsudo
при редактировании в командной строке или перейдите к пункту «Получить информацию» в меню, щелкнув файл правой кнопкой мыши в Finder.Затем нажмите или вытащите из репо. Вам снова будет предложено ввести пароль, но теперь вы должны предоставить свой личный токен доступа .
И вуаля, должно произойти волшебство.
Сам конфиг (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 хранить пароль в связке ключей.