現象
社内github勉強会でwindowsの共有マシンで複数人(複数人分のgithubアカウントを用いて)が同一リポジトリに対してプッシュした際に、gitのキャッシュ?のせいで意図しないユーザ(対象のリモートリポジトリではないユーザ)でプッシュしようとしてエラーが発生する現象の対処法。なお、一度gitクライアントを削除して、再インストールしても改善されませんでした
gitを詳しいわけではないので、もし原因や別の対処法があれば教えて頂けると幸いです
前提条件
- 作業はすべて同一のWindowsマシンで実施する
- 同一のリモートリポジトリをforkしたリポジトリを操作する
- 複数人(仮にuser1とuser2とする)である
- 仮にリモートリポジトリ名をdemo-repoとする
- すべてのユーザは二段階認証を導入していない(ユーザ名/パスワードで認証)
手順
1. user1がforkしたdemo-repoをローカルにクローン
config(user1)
[remote "origin"]
url = https://github.com/user1/demo-repo.git
2. user1がdemo-repoに変更を加え、コミットする
3. user1のリモートリポジトリにプッシュする(成功する)
4. user2がforkしたdemo-repoをローカルにクローン
config(user2)
[remote "origin"]
url = https://github.com/user2/demo-repo.git
5. user2がdemo-repoに変更を加え、コミットする
6. user2のリモートリポジトリにプッシュする(失敗する)
エラー内容
remote: Permission to user2/demo-repo.git denied to user1.
fatal: unable to access 'https://github.com/user1/demo-repo.git/': The requested URL returned error: 403
user2のdemo-repoにpushしようとしたところなぜかuser1で勝手にpushする
しかも、githubへの認証ダイアログが表示されない
対処法
git configのremote urlにユーザ/パスワードを付与することで解決できます
共有マシンではユーザ/パスワードをテキストで残すのはちょっと気が引けますが、一時利用であれば作業が完了したら削除すること
config
# ユーザ名:パスワード(またはアクセストークン)@をgithub.com前に付与する
# なお、パスワードに「@」が含まれている場合は、「%40」に置きかえってください
[remote "origin"]
url = https://username:password@github.com/xxxxxx/demo-repo.git
以上