gitがターミナルから間違ったユーザーでプッシュする


112

gitと私の端末に問題があります。

ここに私の問題を表示するギャラリーがあります:http : //imgur.com/a/6RrEY

端末からコミットをプッシュすると、gitは別のユーザー名でそれらをプッシュすると言います。これはコミットのない私の組織(私の会社)のユーザーであり、誰にも属していないようです:(ギャラリーの最初の写真を確認してください)

しかし、Github for macを使用している場合、これは起こりません。フィードで自分がコミットをプッシュしたのがわかります。

この問題は私の個人リポジトリにも影響します。私の端末では、このユーザーでプッシュしようとするため、それらのリポジトリに対するコミットをプッシュする権限がない(これは明らかに間違っています)と表示されます:(ギャラリーの2番目の写真を確認してください)

何だと思う ?これはMacのGithubでも起こりません。

数日前にコンピューターを新しいものに変更したので、githubのすべてのsshキーをリセットし、Github for Macによって生成された新しいものだけを残したため、ゴーストユーザー/ sshキーが隠されているとは思わないどこかで、このHDDは真新しいです:(ギャラリーの3番目の写真を確認してください)

私の.gitconfigファイルはすべてクリアですが、私の資格情報しかありません:(ギャラリーの4番目の写真を確認してください)

StackOverflow、私は本当にそれを手に入れません、あなたは私の唯一の希望です。

(私の悪いGimpスキルとスターウォーズのリファレンスに対する私の謝罪)

編集: ssh-add -l Mac用のGitHubによって作成された適切なSSHキーのみを表示し、GitHubアカウントを1つだけ持っています

EDIT2: ssh -T git@github.com私を善良なユーザーとして認識します。

EDIT3:いくつかのテストの後、私の端末は私のユーザー名でコミットを行うようですが、Github for macがコミットして適切なユーザー名でプッシュします。この状況は、私が持っている/作成するすべてのリポジトリで発生しますもの)。

EDIT4:個人リポジトリでgit log --pretty="%h %an %ae"は、私の良いユーザー名が表示されます

EDIT5:私の資格情報を上書きする環境変数の兆候はありませんenv。これらの変数を適切な資格情報で設定しようとしても、問題は解決しません。

EDIT6:/.git/configリポジトリのパスにユーザーを強制すると、正常に機能しますが、それは良いオプションではないと思います:http://USER@github.com/USER/REPO.git

EDIT7:コミットをプッシュしたgitユーザーを削除したため、別のエラーが発生しました。remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

最終編集:自作のgitをインストールして入力する git config --global push.default simple と、ユーザーを強制しなくても資格情報が取得されます。それは奇妙です。あなたの助けをありがとう、あなたは素晴らしい人です!


2
チェック~/.gitconfig$project_root/.git/configファイル。これらの2つのうちの1つは、確かにユーザー名に対して誤って構成されています。
mu無

1
あなたの答えansh0lをありがとう。 ~/.gitconfig明確であり、そうです$project_root/.git/config。実際、私はすべての個人プロジェクトでこの問題を抱えています。この他のユーザーは、これらのリポジトリを所有する私の組織に属しているため、作業プロジェクトをプッシュできます。
Yinfei 2014

あなたは複数のgithubアカウントを持っていますか?1つは会社用、もう1つは個人用ですか?
mu無

いいえ、すべてに対して1つだけです。
Yinfei 2014

1
迷惑な解決策は、別のSSHキーを再生成することです。現在のSSHキーを別のサービスで使用している場合、それは無意味です。
Eduardo Bautista、

回答:


167

私は仕事でこの問題を抱えていました。Macに同梱されている、またはxcodeをインストールすると提供される組み込みのgitは、git資格情報をキーチェーンにキャッシュします。私にとっての修正は:

キーチェーンアクセスを開始(cmd +スペースでスポットライトを開始、キーチェーンを入力、Enterキーを押す)

左上のキーチェーンの下で「ログイン」を選択します左側のカテゴリの下で「パスワード」を選択します

「github」という名前を見つけて削除します。


2
ここですべてのgithubエントリを削除し、ログイン構成を設定してください* git config --global user.name <name> * git config --global user.email <email>
Shank_Transformer

私の場合、SourceTreeでこの問題が発生していました。キーホルダーのアイテムを削除すると修正されました!
Shoerob

1
@Shank_Transformerあなたの解決策は私のために働いた!ありがとうございました!
Nazariy、2016年

seahorseUbuntuで検索(または直接起動)する必要がある場合があります。
2017年

3
私はあなたに借金して先生だ
Baconbeastnz

46

githubは、gitからの設定ではなく、表示されるsshキーによってユーザーを識別します。

したがって、個人アカウントからプッシュする場合、またはその逆の場合は、仕事用アカウントのsshキーがキーリングに含まれていないことを確認する必要があります。

を使用ssh-add -lして、キーリングにあるキーを判別し、キーリングssh-add -d <keyfile>からキーを削除します。それが機能しない場合は、「不要な」sshキーをから削除します~/.ssh/config

ソース

注:Githubは、メールのみに基づいてコミットを識別します。


5
これは、私user.emailが正しく設定されているにもかかわらず、間違ったgithubアカウントを永続的に使用していた理由を説明する唯一の回答です。5回賛成票を投じたいと思います。
クリス

1
私の場合、sshキーの削除は魅力のように機能しましたssh-add -D
rPawel

これが私にとってうまくいった唯一の答えでした。ありがとう!!
エドワードハートネット2018年

機能した唯一のオプション。gitが正しいキーを選択しない理由は理解できません。sshファイルについて言及しているので、configで使用する必要があります。
Revanth Kumar

私が行うとssh-add -l、私は助けをしない答えを得ます。それは4096 SHA256:lotsOfGibberish,about40chars (RSA)私がこの情報をどのように私たちに知らないかタイプアウトします。
MiguelMunoz

20

他のユーザーから与えられたすべての優れたオプションにもかかわらず、これを修正する唯一の方法は、gitを完全に再インストールし、入力git config --global push.default simpleして適切な資格情報を書き換えることでした。


@VonC、あなたの答えは素晴らしかったにもかかわらず、それはまったく機能しませんでした。これは私のために働いた唯一の解決策です。gitの問題なのかOSXなのか...
swilgosz

40
git config --system --unset credential.helper私のために働いた、私は今再びプッシュ時に私のGitHub資格情報を求められ、正しいユーザーIDとパスワードを提供することができます。
CodeManX

@CoDEmanX your'sが私に有効な唯一の答えでした。これに遭遇した他の誰にとっても、それは私たちがgithubと連携して2FAを使用していて、最初にgithub guiからトークンを生成し、ローカルの資格情報をリセットした後、それをコマンドラインから私のパスワードとして使用する必要があったためです!詳細については、https:
//help.github.com/articles/creating-a-personal-access-token-for-the-command-line/

その単なる.gitconfigファイルです。削除するかリセットするかのどちらかです...面接のためにトライアルプロジェクトを提出したときにこの問題に直面しました。くそっとも痛いです。構成ファイル付き
Girish

git config --system --unset credential.helperWindows 10 git bashでは機能しません:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
alex

17

私はWindows 10を使用していますが、今日同じ問題に直面しました。私の場合、別のユーザーの資格情報はWindows資格情報マネージャーによって保存されました。したがって、以下のコマンドでgit資格情報を削除/設定解除します、 git config --global --unset credential.helper

助けにはならなかった。次の方法で、Windowsのエントリを手動で削除する必要がありました。

スタート->コントロールパネル--->ユーザーアカウント--->資格情報の管理---> Windows資格情報

次に、git:https : //github.comのようなエントリを検索して削除します。その後は問題なく動作します。


ゴッサムありがとう
Balint

ありがとう、私はこれまでWindowsでこの問題に遭遇したことがありませんでしたが、今日私はこの問題に遭遇しました。
RaKoDev

「助けにはならなかった」と言いますが、設定ファイルをロックできなかったというメッセージが表示された場合、問題は、上のコメントで指摘されているように、昇格したコマンドプロンプトから実行する必要があることです。 。
ステファン

15

私の端末は私のユーザー名でコミットを行っているようですが、他のものでプッシュします

著者とコミッターの名前と電子メール(GitHubにとって重要です)は、以下から取得されます。

git config user.name
git config user.email

ただし、git configおよびgit commit-treeで説明したように、これらの値は環境変数によってオーバーライドできます。

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

これらの変数を再確認してください。

ユーザーを.git/configリポジトリに強制的に入れれば、正常に機能しますが、それは良いオプションではないと思います。

しかし、それは良い解決策になるはずです。
httpsのurlを使用するときは、認証を適切なユーザーで確実に行うために、常にユーザーを指定します。

http://USER@github.com/USER/REPO.git

お返事ありがとうVonC!残念ながら、私のgit config資格情報は正しく、/username/.bashrcファイルに環境変数が設定されていません...
Yinfei

@ Yinfei84にもかかわらず、 ' env'出力を確認してください。
VonC、2014

@ Yinfei84(テストするために)これらの変数を明示的に設定し、コミットとプッシュを試行するとどうなりますか。それでうまくいくでしょうか?
VonC、2014

私はそれをやっただけで問題は解決しません。
Yinfei 2014

2
私がはっきりしていなかったとしたらすみません、次のようなパスにユーザーを強制するとうまくいくことを意味しました:http://USER@github.com/USER/REPO.git
Yinfei

9

一時的なソリューションが最初に実行され killall ssh-agent、次に、使用する必要があるアカウント用に生成されたsshキーを追加しますssh-add ~/.ssh/id_4shameer

タイプのエラーが発生したときに複数のgithubアカウントで作業するのに役立ちます ERROR: Permission to user/repo-git.git denied to username.


1
MacOSキーチェーンからGithubエントリを削除した後、私はそれを行い、それは完全に機能しました。2つのポイント、の後、でssh-agentを再起動する必要があり、コマンドはで実行する必要があります。killalleval "$(ssh-agent -s)"ssh-addsudo
arvymetal 2017

7

MACを使用している場合は、キーチェーンアクセスに移動し、gitアクセスを許可しないユーザーのエントリを削除します。


4

私の解決策は、githubの〜/ .ssh / configファイルにエントリを追加することでした。私はこれをしなければなりませんでした:

  1. 同じキーを持つ複数のgithubアカウントがありました(これを行わないでください!)
  2. sshを使用して「git push」すると、コンピューターはデフォルトでid_rsaを取得し、それをssh IDとして使用します。
  3. githubは、(当然のことながら)提示されたキーに基づいてアカウントを基にしているため、どのアカウントが競合しないかを(当然のことながら)競合させることはできません。キラーは、長い間、私はこれを避けていて、物事はうまくいきました。

追加したエントリは次のとおりです。

Host github.com
    Hostname github.com
    Port 22
    User waterproofpatch
    IdentityFile ~/.ssh/id_rsa_waterproofpatch

私が作成した新しい id_rsa_waterproofpatchとしての私のアカウントに一意のキーを、。私のssh構成のこのエントリは、github.comへの接続の場合、このキーを提示することを指定しています。

別の解決策はおそらく私が他のアカウントにログインし、重複したsshキーを削除することでした。


2

同様の問題がありましたが、問題は公開鍵ファイルの最後の行に私のメールアドレスが含まれていることが原因であることがわかりました。それは私の設定のユーザー設定をオーバーライドするように見えました。.pubファイルからメールを削除すると(そしてリポジトリに再度アップロードされると)、Gitは正しいユーザーを使用して接続しました。


これでうまくいきました。公開鍵ファイルの識別子が元々「name @ domain」の形式であった理由はわかりませんが、実際はそうでした。
ブライアンワーグナー

1

私にとってうまくいったのは、ssh URLの代わりにGithubリポジトリのhttps URL を使用することでした。Githubプロジェクトページに移動し、httpsのURLをクリップボードにコピーして、次の2番目のコマンドに貼り付けました。

git remote rm origin
git remote add origin https://[...]

1

お尻のなんて痛い!

問題:

  1. git hubにリポジトリを作成する
  2. ローカルマシンにクローン
  3. 403をプッシュできません。

git pushが間違ったユーザーを使用していたため、不明な理由で回転します。いくつかの異なるgitハブユーザーIDがあります。私は2つの異なる会社で働いており、学生IDも持っています

Macで作業しています。ここに私がやったことです

1)credential.helperを削除します

  • 資格情報ヘルパーがosxkeychainに設定された方法
  • キーチェーンを開始したとき、ログイン、パスワードをクリックしてgithubを検索すると、3つのエントリが見つかりました。キーチェーンがどのキーを使用するかをどのようにして知ることができるか私にはわかりません

a。credential.helperが構成されている場所を把握する必要があります

git config --local credential.helper
git config --global credential.helper
git config --system credential.helper

b。正しいfigファイルを見つけたら、次のように削除します

git config --global --unset credential.helper

私のローカルリポジトリで.git / configファイルをハッキングしました

私が変更され

    url = https://github.com/aedavids/lab3RotationProject.git

    url = https://myGitHubUserId@github.com/aedavids/lab3RotationProject.git

1

私の特定のケースでは、.netrcアクセスgithub.comにを使用していて、別のユーザーのトークンで構成されていることが問題でした。

machine github.com login <another-user-token>


0

MacOS High Sierraのid_rsaおよびid_rsa.pubファイルを削除する(または* .bakに名前を変更する)この問題を解決しました。ここからのアイデア。

〜/ .ssh / configにカスタムホストリダイレクトがあります。これは適用する必要がありますが、2つのファイルの名前を変更する前に間違ったユーザーを使用しました...


0

それが私にとってうまくいきました:

  1. .git-credentials内の認証情報を変更する
  2. .gitconfig内のグローバルuser.nameおよびuser.emailの変更

0

リポジトリを削除して再度追加したところ、

git remote rm origin
git remote add origin git@github.com:fguillen/MyApp.git

0

ように私は、でも私のgitのアンインストール後にwindows10で同じ問題を抱えている@ user542833は窓がキャッシュし、あなたがあなたの窓にGithubの資格情報を削除する必要がありますので、それがあると言うCredential Managerと、あなたが再びプッシュしようとすると、Windowsは、あなたの資格を依頼し、再度設定しました


これでうまくいく場合もあれば、うまくいかない場合もあります。
bvdb

0

新しいアカウントで新しいGitHubページリポジトリにプッシュしようとするとき、これを理解するのに6時間費やしただけです。

設定user.nameとuser.emailを設定した後でも、デフォルトで私のメインアカウントになります。

これは、sshキーのデフォルトがid_rsa(私のメインアカウント)になるためです。

新しいアカウントを使用するには、実行する必要がありました。

ssh-add ~/.ssh/my_new_key

これにより、プッシュ時にgitが新しいキーを使用するようになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.