質問: ### 前提・実現したいこと githubのアカウントを複数使い分けて、リモートリポジトリにpushしようとしています。 ### 発生している問題・エラーメッセージ 2つめのアカウント`second_account`で、ブランチをpushしようとすると、1つめのアカウント`first_account`に否認される問題が解決できず、困っています。 どうすれば、否認されずにpushすることができるようになりますか。 ``` remote: Permission to reponame.git denied to first_accout. fatal: unable to access 'https://github.com/sample/sample.github.io.git/': The requested URL returned error: 403 ``` ### 該当のソースコード 実行しているコマンド ``` $ git push origin branch-name ``` ### 試したこと 1. 記事「同一端末で異なるgithubアカウントにpushするときの手順」にしたがって、2つめのアカウント`second_account`のssh keyを作成してgithubに登録することはしました。 ``` $ git config --global -e ``` で、グローバルのファイルは空白でアカウント指定などはされていないことを確認しました。 1. ``` $ git config --global user.name $ git config --global user.email $ git config --local user.name $ git config --local user.email ``` 上記のコマンドで ・`global`には1つめのアカウントに何も設定されていないこと ・`local`には使用した2つめのアカウント`second_account` が設定されていることを確認しました。 ### ご回答を受けてからの変更点とエラー ご回答を受けてHTTPSからSSHへの切り替えをしたところ、pushした時のエラーメッセージが以下のように変わりました。 これは、github側の設定に問題があるということでしょうか。 ``` $ git remote -v origin git@github.com:sample/sample.io.git (fetch) origin git@github.com:sample/sample.io.git (push) $ git push origin branch-name ``` エラー文 ``` /Users/username/.ssh/config: line 1: Bad configuration option: --- /Users/username/.ssh/config: line 10: Bad configuration option: --- /Users/username/.ssh/config: terminating, 2 bad configuration options fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. ``` ### 補足情報(FW/ツールのバージョンなど) ターミナル バージョン2.10
回答: 2つ目のGitHubへ1つ目のユーザーでコミット、pushされた状態になるという事でしょうか? おそらく2つめのGitHubへpushするリポジトリのconfigへは ``` $ git config --local user.name $ git config --local user.email ``` でリポジトリごとに毎回指定する方法しかないと思います。違ったらすいません。 このuser.emailは2つ目のメールアドレスを指定する方が良いでしょう。 `--local`で指定しない場合は`--global`で設定したユーザーでコミット、pushがされると思われます。 また、分かんないですけど、--localで個別に指定せずコミットした場合はすでに--globalのユーザーでコミットしていると思われますのでpushしてもGitHub側でメールアドレス(configで指定した)に対するユーザーという判断をし1つ目のGitHubアカウントでコミットした状態となると思われます。私の場合はそうなりました。 よって、`git init`からやり直した方が良いかどうか分かりませんがそうせざるを得ませんでした。 と、いう事で質問です。 1 `git config --local --list`でuser.emailは2つ目のGitHubメールアドレスとなっていますか? 2 ~~`git remote -v`で表示されるのは`git@github.com:githubアカウント/リポジトリ名.git`となっていますか?それとも、`https://github.com/githubアカウント/リポジトリ名.git`となっていますか?前者はSSHで後者はHTTPS接続です。~~ SSHという事の様ですがGitHubPagesのリポジトリですか? だとすると、`git@github.com:sample/sample.github.io.git`ではないかと思いますが違いますか? SSH接続では、鍵を作成しGitHubへ公開鍵を登録したと思います。