web-dev-qa-db-ja.com

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

Gitと端末に問題があります。

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

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

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

問題は私の個人的なリポジトリにも影響します、私の端末は、これらのリポジトリでコミットをプッシュする許可を持っていないと言います(明らかに間違っています)このユーザーでプッシュしようとするので: (ギャラリー2枚目の写真を確認)

何だと思う ?これはGithub for Macでも発生しません。

数日前にコンピューターをまったく新しいものに変更したため、GitHubのすべてのsshキーをリセットし、Github for Macで生成された新しいキーのみを残しました。どこかに、このHDDは真新しいです:(ギャラリー3番目の写真を確認してください)

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

StackOverflow、助けてくれない、あなたは私の唯一の希望です。

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

EDIT:ssh-add -lはgithub for macで作成された適切なsshキーのみを表示し、githubアカウントは1つしかありません

EDIT2:ssh -T [email protected]は私を良いユーザーとして認識します。

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

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

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

EDIT6:リポジトリの/.git/configのパスにユーザーを強制した場合、物事は正常に戻りますが、それは良いとは思いませんオプション:http://[email protected]/USER/REPO.git

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

最終編集:gitをhomebrewでインストールし、git config --global Push.default simpleと入力しました。ユーザーを強制します。変だね。あなたの助けに感謝します、あなたは素晴らしい人です!

97
Yinfei

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

18
Yinfei

私は職場でこの問題を抱えていました。 Macに付属している、またはxcodeをインストールするときに付属する組み込みgitは、キーチェーンにgit資格情報をキャッシュします。私にとっての修正は:

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

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

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

148
user542833

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

作成者とコミッターの名前と電子メール(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://[email protected]/USER/REPO.git
13
VonC

一時的な解決策は、最初にkillall ssh-agentを実行してから、使用する必要があるアカウント用に生成されたsshキーを追加しますssh-add ~/.ssh/id_4shameer

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

8
mshameer

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

7
Chitrapal Singh

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

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

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

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

6
Gowtham

私にとっての解決策は、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として、アカウントに固有のnewキーを作成しました。私のssh設定のこのエントリは、github.comへの接続のために、このキーを提示したいことを指定しています。

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

3
waterproofpatch

それは私のために働いたものです:

  1. .git-credentials内の資格情報の変更
  2. .gitconfig内のグローバルなuser.nameとuser.emailを変更する
0
reshetech

リポジトリを削除して再度追加すると、私にとってうまくいったのは:

git remote rm Origin
git remote add Origin [email protected]:fguillen/MyApp.git
0
fguillen

@ user5428 のように、gitをアンインストールした後でもwindows10で同じ問題が発生します。これは、windowsのGithub資格情報を削除する必要があるためですCredential Managerおよびプッシュしようとすると、ウィンドウはあなたの資格情報を要求し、それを再設定します

0

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

git remote rm Origin
git remote add Origin https://[...]
0
Keith Bennett

キーチェーンをクリアしても解決しませんでした... ssh-add -Dを使用して、ssh-add <keyfile>でキーを再追加する必要がありました

0
Victor Piousbox

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

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

0
CodingYourLife

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

0
Mike