要点
- GitHubレポジトリのwikiクローン→ローカルで編集→Pushする際にエラーが発生しました。
- 原因は、二段階認証を有効にしている状態で、HTTPSでPushしてることにありました。
- なので、.git/configのリモートURLをSSHプロトコルに変更すればPushできました。
エラー発生→解決までの経緯
前提条件
- GitHubで二段階認証を有効にしているため、SSHでPushするのがマストな状態。
- SSH接続に必要な設定は済ませてある。
※GitHubにSSH接続するための手順は、こちらの記事がわかりやすかったです!
発生したエラー
GitHubレポジトリのwikiをローカルにcloneして編集し、Pushしようとしたところ以下のようなエラーが発生しました。
$ git push origin master
Username for 'https://github.com': USERNAME
Password for 'https://USERNAME@github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/USERNAME/REPOSITORY.wiki.git/'
解決方法
二段階認証を有効にしている状態で、HTTPSプロトコルでPushしようとしているため、上記のようなエラーが起こるようです。
# 元の状態
$ git remote -v
origin https://github.com/USERNAME/REPOSITORY.wiki.git (fetch)
origin https://github.com/USERNAME/REPOSITORY.wiki.git (push)
なので、ローカルレポジトリのリモートURLをSSHプロトコルに変えてからPushする必要があります。
$ vim .git/config
------------------
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
# ↓ここをHTTPSからSSHプロトコルに変更
url = git@github.com:USERNAME/REPOSITORY.wiki.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
リモートURLが変更できていることを確認して、Push。
$ git remote -v
origin git@github.com:USERNAME/REPOSITORY.wiki.git (fetch)
origin git@github.com:USERNAME/REPOSITORY.wiki.git (push)
$ git push origin master
無事にPushできました。
(ちなみに自分は、リモートURLを修正する際にgit@github.com:
の:
を/
のままにしていて、一瞬「あれ?Pushできない?」となりました。)
その他気づいた点
なお、この記事を書いている2021年1月現在では、GitHubレポジトリのwikiはHTTPSでしかクローンできないみたいです。
そのため、wikiをローカルで編集する際は、必要に応じてリモートURLをSSHに変えておく必要がありそうです。