質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

Q&A

解決済

4回答

2062閲覧

githubのアカウントを複数使い分けるときにpushしようとすると別のアカウントによって否認される

退会済みユーザー

退会済みユーザー

総合スコア0

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

0グッド

0クリップ

投稿2020/01/28 09:24

編集2020/02/08 09:15

前提・実現したいこと

githubのアカウントを複数使い分けて、リモートリポジトリにpushしようとしています。

発生している問題・エラーメッセージ

2つめのアカウントsecond_accountで、ブランチをpushしようとすると、1つめのアカウントfirst_accountに否認される問題が解決できず、困っています。
どうすれば、否認されずにpushすることができるようになりますか。

bash

1remote: Permission to reponame.git denied to first_accout. 2fatal: unable to access 'https://github.com/sample/sample.github.io.git/': 3The requested URL returned error: 403

該当のソースコード

実行しているコマンド

bash

1$ git push origin branch-name

試したこと

記事「同一端末で異なるgithubアカウントにpushするときの手順」にしたがって、2つめのアカウントsecond_accountのssh keyを作成してgithubに登録することはしました。

bash

1$ git config --global -e

で、グローバルのファイルは空白でアカウント指定などはされていないことを確認しました。

bash

1$ git config --global user.name 2$ git config --global user.email 3$ git config --local user.name 4$ git config --local user.email

上記のコマンドで

globalには1つめのアカウントに何も設定されていないこと
localには使用した2つめのアカウントsecond_account

が設定されていることを確認しました。

ご回答を受けてからの変更点とエラー

ご回答を受けてHTTPSからSSHへの切り替えをしたところ、pushした時のエラーメッセージが以下のように変わりました。

これは、github側の設定に問題があるということでしょうか。

bash

1$ git remote -v 2origin git@github.com:sample/sample.io.git (fetch) 3origin git@github.com:sample/sample.io.git (push) 4$ 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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

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へ公開鍵を登録したと思います。

投稿2020/02/07 11:28

編集2020/02/07 11:33
shinami

総合スコア334

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/08 09:14

ご回答いただきましてありがとうございます。 以下、質問に対する回答です。 1. `git config --local --listl`で、user.emailは2つ目のGitHubメールアドレスになっています。 2. GitHubPagesのリポジトリです。SSH への切り替えをしたところ、「ご回答を受けてからの変更点」のエラー文に変わったので「発生している問題・エラーメッセージ」に記載したhttpsとは異なる問題が発生している可能性が高いと考えています。
shinami

2020/02/08 10:07

参考にされているリンク先を見ましたがconfigファイルに --- を付けていますか? そのために出ているエラーの様です。これは特にいらない気がします。 1行目と10行目の --- を外してみてはどうでしょうか?
退会済みユーザー

退会済みユーザー

2020/02/08 12:54

お返事ありがとうございます。 最初の質問内容とエラー文から乖離してきたため、以下の別質問を投稿させていただきました。 もしご回答いただけるようでしたら、よろしくお願いいたします。 https://teratail.com/questions/240237?modal=q-comp
guest

0

こんにちは。

git config で設定する identifier は単に commit に付ける署名でしかないので、GitHub アカウントの認証とは根本的に関係がありません。

問題は、.ssh/config による認証情報の使い分けを準備しておきながら、HTTPS でリポジトリに接続していることです。設定した情報を全く使っていないわけです。
質問文ではわざわざ repository address を省略しているようですが、https ですよね?

remote のアドレスを SSH のものに設定し直してください。その際、host を .ssh/config で設定した名前に置き換えることを忘れないでください。

投稿2020/01/29 01:22

tamoto

総合スコア4103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/06 15:29

ご回答いただきましてありがとうございます。 以下の2点についてどのようにすればいいのか、具体的に教えていただきたいです。 - remote のアドレスを SSH のものに設定し直してください。 - host を .ssh/config で設定した名前に置き換える
tamoto

2020/02/07 01:06

HTTPS を使っているかどうかが未だに明言されていませんが。 試したこと1で .ssh/config に項目を追加していると思いますが、その項目のホスト名にアクセスしようとしたときに限り、その設定が使用されます。 仮に .ssh/config に Host mysecondgithubaccount という名前で追加したのであれば、リモートのアドレスは git@github.com:<usernane>/<repositoryname>.git ではなく、 git@mysecondgithubaccount:<usernane>/<repositoryname>.git となります。
退会済みユーザー

退会済みユーザー

2020/02/07 07:03

HTTPSを使っているかどうかにつきまして、エラーメッセージを再確認し、質問内容も変更いたしました。 ``` fatal: unable to access 'https://github.com/sample/sample.github.io.git/': ``` このエラー文からはHTTPSを使っているということが言えますでしょうか。
tamoto

2020/02/07 08:05

質問の更新見落としていました。申し訳ありません。 現状は HTTPS で接続されているため、SSH への切り替えが必要です。 SSH の設定が適切に行われているのであれば、あとは remote のアドレスを差し替えるだけで解決するはずです。 `git remote set-url` をキーワードに調べると良いです。
退会済みユーザー

退会済みユーザー

2020/02/07 10:45

``` $ git remote -v origin git@github.com:sample/sample.io.git (fetch) origin git@github.com:sample/sample.io.git (push) ``` で、SSH の設定が適切に行われているということになりますか。
退会済みユーザー

退会済みユーザー

2020/02/08 09:16

追記として、「ご回答を受けてからの変更点とエラー」に現状を明記させていただきました。
guest

0

参考にされているサイトを見てみましたが、「git remoteの登録」での操作が間違っている(first-accountのまま)とそのような動作になると思いますので、とりあえず「git remote -v」でちゃんと変更されているかどうか確認してはいかがでしょうか。

投稿2020/01/28 13:29

katsuko

総合スコア3462

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/01/28 18:45

``` $ git remote -v origin gitrepo.git (fetch) origin gitrepo.git (push) ``` で、fetchもpushも入力したい同じレポジトリ名が設定されていることを確認しました。
yumetodo

2020/01/29 10:13 編集

ん?gitrepo.gitってなんか省略してここに転記しているとかじゃなくて本当にその表示なんですか?そうだとしたらそりゃうまくいくわけないという印象です。httpないしSSHで接続するのに有効なURIが必要です
退会済みユーザー

退会済みユーザー

2020/02/06 15:31

ご指摘いただきましてありがとうございます。 省略が適切ではなく、httpsでの接続でした。
guest

0

git commitするときの情報とpushするときの情報は異なります。パスワード自動記憶が働いているのでは?

https://qiita.com/hiro9/items/19a415ed2349430663b3

SSH接続するほうがやりやすいかもわからんですね。

投稿2020/01/28 11:21

yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/01/28 15:40

ご回答いただきましてありがとうございます。環境がmacなのですが、いただいたwindowsと類似のキーワードで検索すべきでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問