最近新しいMacにしました。
移行アシスタントで丸ごとコピーしたのですが、なぜかgit pullができず困っていました。
しかしやっと原因が分かったので、メモを残します。
移行後いつも通りgit操作を行うとするとエラーになる。
$ git pull origin develop
Username for 'https://github.com': tar-xzvff
Password for 'https://tar-xzvff@github.com':
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/****/****.git/'
でもSSH接続はできる。
$ ssh -T git@github.com
Hi tar-xzvff! You've successfully authenticated, but GitHub does not provide shell access.
SSH公開鍵を登録し直したり、PATを再生成してMacに設定するも同じエラーが出続ける。
$ git pull origin develop
Username for 'https://github.com': tar-xzvff
Password for 'https://tar-xzvff@github.com':
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/****/****.git/'
確認&解決方法
remote urlを確認したところhttpsになっていた。
$ git remote -v
origin https://github.com/****/****.git (fetch)
origin https://github.com/****/****.git (push)
git remote set-urlコマンドでurlをsshに変更。
※GitHubのリポジトリのトップからgit cloneする時のsshのurlをコピペした方がお手軽です。
git remote set-url origin git@github.com:****/****.git
ワンライナーで行う場合は以下。
git remote --verbose | grep fetch | grep -Eo "http(s?)://(\w|:|%|#|\$|&|\?|\(|\)|~|\.|=|\+|\-|/)+" | sed -e 's/https:\/\//git@/g' | sed -e 's/\//:/' | xargs -L1 git remote set-url origin
urlがsshになっていることを確認。
$ git remote -v
origin git@github.com:****/****.git (fetch)
origin git@github.com:****/****.git (push)
これでgit pullなど操作が今まで通りできるようになりました。
そもそも今までhttpsでなぜ操作ができていたのかはわからないですが、おそらく移行後のキーチェーンアクセス周りの設定が不十分だったのかなと思います。
めでたしめでたし 完