作業用のGitHubアカウントと個人アカウントを持っています。最初にテストプロジェクトに個人用のものを使用し、次に同じコンピューター上の他のアカウントでリポジトリを移動しました。
個人用アカウントに新しいリポジトリを再度作成したいので、グローバルとローカルを変更しましたuser.name
、および新しいsshキーペアを実行し、GitHubセットアップページに入力しました。次に、ディレクトリを設定します
git init
git remote add Origin <url>
git Push Origin
しかし、それは今私に教えてくれます
エラー:personaluser/newrepo.gitへのアクセスが拒否されました
他のアカウントがこのアカウントにどのように接続されているのかわかりません。 .git/config
はworkusername
関連のものを表示しません。
Windows 10を使用している場合は、Rajanの答えを読むのに時間をかけてください。
これは、私の現在の仕事のセットアップと非常によく似ています。すでに別のssh-keys
を設定しているようですので、~/.ssh/config
ファイルを作成して、次のような情報を入力する必要があります。
Host work.github.com
HostName github.com
User WORK_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_rsa
IdentitiesOnly yes
Host personal.github.com
HostName github.com
User PERSONAL_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_personal_rsa
IdentitiesOnly yes
すべてのプロパティは一目瞭然ですが、IdentitiesOnly
プロパティはそうです。私はそれが何のためであるかを説明しようとはしませんが、それは私の現在のセットアップにあり、うまく機能します。
Host URL
は正しいユーザー設定を取得するための単なるポインタであり、ターゲットHostName
urlにファイルを正しく取得することには何の影響もありません。
Origin
(または一般的にremote
)のURLがユーザー名に応じてそれぞれのリポジトリの正しいHost
urlと一致することを確認する必要があります。既存の個人リポジトリが既にある場合は、テキストエディターでそのリポジトリの.git/config
ファイルを編集できます。
[remote "Origin"]
fetch = +refs/heads/*:refs/remotes/Origin/*
url = [email protected]:PERSONAL_GITHUB_USERNAME/project.git
または、コマンドラインで実行します:
git remote set-url Origin [email protected]:PERSONAL_GITHUB_USERNAME/project.git
あなたの仕事と同じように:
[remote "Origin"]
fetch = +refs/heads/*:refs/remotes/Origin/*
url = [email protected]:your_work_organization/project.git
または、コマンドライン経由:
git remote set-url Origin [email protected]:your_work_organization/project.git
もちろん、~/.ssh/config
ファイルにHost
URLの1つをいつでも設定できます。
Host github.com
work.github.com
のみを使用して、構成の関係を簡単に確認しました。
これらがすべて設定されると、それぞれのリモートにプッシュできるようになります。
編集
私が自分自身に気づいたことの1つは、user.email
値にグローバルgit設定値を設定した場合(そしてuser.name
も異なる値を送信すると推測する)、gitはそのメールユーザーとしてコミットを表示します。これを回避するには、ローカルリポジトリ内のグローバルgit構成設定をオーバーライドできます。
$ git config user.name "John Doe"
$ git config user.email [email protected]
これで、そのリポジトリの正しいユーザーとしてコミットが送信されます。
[コントロールパネル]> [ユーザーアカウント]> [資格情報マネージャー]> [汎用資格情報]に移動します。
git認証情報を削除します。次に、git Pushを実行します。これにより、gitクレデンシャルの入力が求められます。正しい資格情報を入力してください。
Sshではなくhttpsに切り替えることもできます。 httpsを使用する場合、.git/config設定が尊重されます。そのため、.git/configで以下を変更します。
url = [email protected]:USER/PROJECT.git
に
url = https://[email protected]/USER/PROJECT.git
(これらの値はgitプロジェクトページにあり、SSH
およびHTTP
ボタンをクリックして新しい値を取得します);
githubは、gitの設定ではなく、表示されるsshキーによってユーザーを識別します。
したがって、個人アカウントとしてプッシュする場合、またはその逆の場合、仕事用アカウントのsshキーがキーリングにないことを確認する必要があります。つかいます ssh-add -l
はキーリングにどのキーが含まれているかを判断し、ssh-add -d keyfile
キーリングからキーを削除します。
また、~/.ssh/config
特定のsshキーをgithubに提示するように設定している場合。最後に、同じssh公開キーを持つ2つのアカウントをgithubがどのように処理するかわかりません。したがって、それを行わないようにしてください。
新しいgithubアカウントを作成したため、最近同じ問題が発生しました。上記の回答を試しましたが、役に立ちませんでした。次に、Keychain Accessからgithubを削除することについての投稿を見ました(macを使用している場合のみ)。私がgit Pushを実行すると、ユーザー名とパスワードが要求され、機能しました!
同じ問題がありました。 GitHubには同じSSHキーを使用する2つのアカウントがあり、GitHubはデフォルトで、レポジトリへのアクセス許可のない間違ったアカウントを使用していました。すべてを使用しなかったアカウントからSSHキーを削除しました。
GitHubが自分自身を認証しているアカウントをテストできます:
ssh -T [email protected]
私にとって、これは元々間違ったユーザー名を示していましたが、そのアカウントから重複したSSHキーを削除した後、正しいユーザー名を示し、私のリポジトリへのプルとプッシュはうまく機能しました。
私はこれが少し遅れるかもしれないことを知っていますが、私はかなり長い間これで立ち往生し、最終的にこのように修正しました:
キーチェーンアクセス(osX)に移動します
gitを検索(すべてのアイテムを選択したことを確認してください)
お役に立てれば!
アカウントに関連付けられているSSHキーを変更しても機能しない場合は、アカウントに関連付けられている電子メールを変更します。
[Github]> [アカウント設定]> [メール]に移動し、コミットに使用しているメールアドレスがアカウントのメールと一致することを確認します。
コミットに使用しているメールアドレスを確認するには、次のコマンドを実行します:git config --global user.email
。コミットに使用しているメールアドレスを変更する必要がある場合は、git config --global user.email "[email protected]"
。
同じ問題が発生しました。以下は私の場合に何が起こるかです:
これにより、リモートリポジトリと通信するたびに資格情報を要求しないようにgitを作成しました:git config --global credential.helper wincred
「wincred」git config --global credential.helper noneを置き換える「none」で同じコマンドを実行することで問題を解決しました
その後、Gitはもう一度ユーザー名/パスを尋ねると、すべてがうまくいきます
私もこの問題を抱えていましたが、他の解決策はどれもうまくいきませんでした。作業のために、github認証用のエントリを含む.netrc
ファイルを作成したことがわかりました。 git
コマンドは常に.netrc
を使用しましたが、これには私の古いユーザー名とパスワードがありました。新しいユーザー名とパスワードを使用するには、.netrc
ファイルのエントリを編集する必要がありました。
仕事中にgitで問題が発生したことはありませんでした。最近、MacbookをActive Directoryに接続し、マシンにいくつかの管理者アカウントを追加しました。ただし、その後、画面をロックして戻ってくるまでgitは正常に動作します。すると、次のようなあいまいなエラーが表示されます
No user exists for uid 1927040837
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
私はこの特定のマシン上でユーザー用のsshキーを1つしか持たず、私の用語ではzshを使用しています。ユーザーの電子メールと名前は正しいため、問題ではありませんでした。エルゴ、マシンをロックするたびに再起動するのは無駄です。私にとっての解決策は、私の.zshrc
ファイルを作成し、ssh-keyをエクスポートする行のコメントを解除します(これまで行ったことはなく、zshを何年も使用していました)。
行は次のようになります。
# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"
これを実行したら、ターミナルでreset
を実行するだけで、すべて正常に動作します。
これが他の人の助けになることを願っています。
私もこの問題に遭遇し、sshキーを削除して新しいキーを作成した後でも、上記の解決策のいずれも機能しませんでした。 ssh-agentはキャッシュされたキーを使用していたことが判明したため、killall ssh-agent
そして、それは働いた。
ここで解決策を見つけました。 http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-and-keys/
追加したい-別のユーザーのアカウントで作業している場合は、リポジトリ設定の下の共同編集者エリアに自分を追加してください。
まあ、私は2つのgithubアカウントを適切に機能させるために1日中無駄になりました。クローン、コミット、プッシュの両方を行う必要があります。だから、すべての目的と結果を知らないので、私はうまく機能していると思われる解決策を強制しました。
基本的に、gitとsshのプロファイルを変更して、再び切り替えるまでモーダルモードで使用するアカウントに一致させます。
Githubには、dhoerlと他の2つのアカウントがあります。 .sshディレクトリにid_rsaファイル用の個別のファイルがあります。 ssh-add -D、次にssh-add git_dhoerl、ssh-add theOtherOneが必要でした。
あるプロファイルから別のプロファイルに切り替えるシェルコマンドが2つあります。それぞれ次のようになります。
cd ~/.ssh
rm id_rsa
ln git_dhoerl id_rsa
git config --global user.email "myEmailAddr"
git config --global github.user "myAccountName"
git config --global github.token "myToken"
最初にkillall ssh-agent
を実行し、次に使用する必要があるアカウント用に生成されたsshキーを追加する一時的なソリューションを見つけましたssh-add ~/.ssh/id_4shameer
これは、タイプERROR: Permission to user/repo-git.git denied to username
のエラーを取得するときに、複数のgithubアカウントで作業できる1つの方法です。