別のユーザー名でGitHubにプッシュするにはどうすればよいですか?


154

友人と私は私のコンピューターを共有しています。私はWindows 7でgit bashシェルを使用してGitHubにプッシュしました。今はそのコンピューターの別のプロジェクトにいるので、彼女に彼女のアカウントにプッシュする必要があります。しかし、それは私のユーザー名を使用しようとし続け、私は彼女のリポジトリへのアクセス権がないと言っています:

$ git push her_github_repository our_branch
ERROR: Permission to her_username/repository.git denied to my_username.
fatal: The remote end hung up unexpectedly

これは、プッシュする前にhelp.github.com/articles/setting-your-email-in-git(useを使用git config --global user.name her_username)に役立ちますか
Prinzhorn

HTTPS URLに切り替えたので、githubは常に資格情報の入力を求めます。誰が実際にプッシュを実行したかに関係なく、コミットはユーザーがgit config user.nameとgit config user.emailで行ったように記録されることに注意してください。ps誰が何をプッシュしたかという歴史はないと思います。
ホルヘオルピネル2014

28
git config --local credential.helper ""トリックを行うかもしれません。
SOFe 2017年

私のWindowsシステムでは、ここに記載されている解決策をどれも実行できませんでした。この回答で与えられた手順は、ようやく機能しましたstackoverflow.com/a/15382950/351903
Sandeepan Nath

@SOFeそれが私が探していたものです!このコマンドは、キャッシュされた資格情報を効果的にワイプしますか?
CCJ

回答:


92

別のWindowsユーザーを使用している場合、SSHキーとgit設定は独立しています。

これが選択肢にない場合は、友達がSSHキーをGithubアカウントに追加する必要があります。

ただし、以前の解決策では自分でプッシュし続けることができますが、彼女のリポジトリにプッシュすることができます。これを望まず、同じPCの別のフォルダーで作業する場合-gは、configコマンドのフラグを削除することにより、gitを使用してフォルダー内でローカルにユーザー名と電子メールを設定できます。

git config user.name her_username
git config user.email her_email

または、httpsプロトコルをプッシュすると、Githubは毎回ユーザー名/パスワードの入力を求めます(パスワードマネージャーを使用する場合を除く)。


6
私が覚えている限り、SSHキーはGithubで一意である必要があります。同じキーを複数のアカウントにアタッチすることはできません
Gareth

@Garethたぶん、Windows(および私が知っているすべての場所)で同じユーザーに複数のSSHキーを設定できます。
Simon Boudrias、2012年

2つのキーを持つことはできません。以下の私の回答を参照してください。
2015

1
すべてのプロジェクト:git config --global user.name "Mona Lisa"
w3spi

235

これは私のために働きました、それはユーザー名とパスワードを要求します

git config --local credential.helper ""
git push origin master

1
ありがとう、bitbucketを使用してユーザー名を設定しましたが、aws code-commitへの移行は解決しました
Alejandro Ruiz

私はhelper = cache --timeout=999999私の上に設定し、.gitignoreこれはうまくいきました。しかし、ローカル設定を変更せずにそれをリセットする方法はありますか?
Ciro Santilli郝海东冠状病六四事件法轮功

これは素晴らしいです!
hargun3045

これは私が探していたものです!!!
aagjalpankaj

1
ここで何が行われるかを詳しく説明します。ローカルリポジトリを構成して、(おそらくグローバルに)構成されたを無視しますcredential.helper(例:Windows資格情報ストア)。これは、何も構成されていないため、必要になるたびにユーザー名/パスワードを要求することも意味します。したがって、credential.helper代わりにをキャッシュするように構成するか(@Ciro Santilliの回答を参照)、ここで別の回答を使用することもできます。
ラグ

50

別のアカウントを使用してプッシュできます。たとえば、アカウントが.gitconfigに保存されているAであり、プッシュするリポジトリの所有者であるアカウントBを使用したい場合。

アカウントB:B_user_name、B_password
SSHリンクの例: https //github.com/B_user_name/project.git

Bアカウントでのプッシュは次のとおりです。

$ git push https://'B_user_name':'B_password'@github.com/B_user_name/project.git

.gitconfigでアカウントを表示するには

  1. $git config --global --list
  2. $git config --global -e (アカウントも変更するため)

わあ、これが答えです!! 私が設定しているuser.nameuser.emailローカル設定では、私は、ユーザー名、および動作していないとクローン化してきました。今、最後の答えは何でも...で触れるキーチェーン/なしで動作しますGit 2.9.0 in Windows。「とうとう重要なことではありませんが」..これはそれが呼ばれるものです。ありがとうございました。この答えはもっと賛成に値する。
WesternGun、2007

3
唯一の副作用は、あなたのパスワード/ユーザー名がbashの履歴に記録されるということです。
WesternGun、2007

これをありがとう、これはまさに私がやりたかったことです。しかし、これはマスターにプッシュします。マスター以外のブランチにプッシュするにはどうすればよいですか?
Steven Anderson

1
@WesternGun bashの履歴に記録されないようにする場合は、URLにパスワードを入力しないでください。を使用しhttps://'B_user_name'@github.com/B_user_name/project.gitます。これにより、のパスワードが要求されますB_user_name
サブルシーカー

24

カスタムIdentityFileを使用してsshエイリアスを設定し、カスタムme-githubホスト名を使用するようにオリジンを書き換えました。

#when prompted enter `id_rsa_user1` as filename
ssh-keygen -t rsa

# ~/.ssh/config
Host user1-github
HostName github.com
Port 22
User git
IdentityFile ~/.ssh/id_rsa_user1

#check original remote origin url
git remote -v
origin git@github.com:user1/my-repo.git

#change it to use your custom `user1-github` hostname
git remote rm origin
git remote add origin git@user1-github:user1/my-repo.git

5
:代わりに、私たちがして、リモートのURLを変更することができ、追加し除去するgit remote set-url origin git@user1-github:user1/my-repo.git 😊
ニンファム

18

git@github.com:username/projectname.gitHTTPS URLではなくSSH URL()を使用する場合、$GIT_SSH_COMMAND環境変数を使用して一時的に別のSSHキーを指定できます。

$ GIT_SSH_COMMAND="ssh -i different_private_key" git push

ユーザーアカウントがリポジトリへのアクセス権を持っている場合、そのアカウントは、SSHキー(参照があります。私の知る限り、SSHのURLで、GitHubにはキーのみについて、ユーザー名を気にしないSSHキーのページをアカウントにします設定)、そのSSHキーを使用してそのリポジトリにプッシュすると、そのプッシュはそのユーザーからのものとして処理されます。


1
これは、変化する、興味深いことに、私のために動作しませんでしたuser.nameし、user.emailgit configに関連しているコミットするアカウントを変更します
ケビン・趙

それは私のために働いた。答えをより明確にするための小さなコメント。"different_private_key"はhostA上のファイルで、userAであるhostAに対して "git push"を実行したいuserBの秘密鍵が含まれています。このファイルをhostAに(たとえば、〜/ .ssh / id_rsa_userBとして)作成し、userBが存在するhostBからのファイル〜/ .ssh / id_rsaの内容をそこに置く必要があります。userBがhostAに存在するかどうかは関係ありません。
Alexander Samoylov

15

git pushGitの実行後にのパスワードを要求されたがuser、としてプッシュしnew_userたい場合は、次のように使用できますgit config remote.origin.url

$ git push
user@my.host.com:either/branch/or/path's password:

この時点でを使用^Cして終了しgit push、フォローを使用してとしてプッシュしnew_userます。

$ git config remote.origin.url
user@my.host.com:either/branch/or/path

$ git config remote.origin.url new_user@my.host.com:either/branch/or/path

$ git push
new_user@my.host.com:either/branch/or/path's password:

こんにちは、私はこのソリューションをアトラシアンの隠し場所にプッシュするために試しました。「<URL> / info / refs not found:you run git update-server-info on the server?」というエラーが表示されます Stashでコマンドを実行できないと思います。これを解決する方法はありますか?ありがとう!
Zsolt Szilagyi 2015

:GitHubのために、これは次のようになりますgit config remote.origin.url https://different_user@github.com/different_user/repo.git
NumesSanguis

13

複製するのは簡単ですが、git URLにユーザー名を付けてください。コミットするときに、新しいユーザーのパスワードが要求されます。

例えば:

git clone https://username@github.com/username/reponame.git

git clone https://username@bitbucket.org/username/reponame.git


4
この回答には、少なくともより多くの賛成票が必要です。@Krishna Kavoorが言うようにしないと、常に問題が発生します。グローバルにusername1があり、ローカルにusername2があるにもかかわらず、gitはグローバル名を使用しようとするためです。
Markon

それは動作しません。私はそれを使用し、それは言う:fatal: repo not found
WesternGun、2007

1
私は3つの異なるクライアントからの3つの異なるプロジェクトを持っているので、それは常に動作します。それは奇跡のように動作します。リポジトリのパスが正しいことを確認してください。
Krishnamoorthy Acharya 2017

7

これがあなたの問題なら

remote: Permission to username1/repo.git denied to username2.
fatal: unable to access 'https://github.com/username1/repo.git/':
The requested URL returned error: 403

git configを使用してターミナルからユーザー名と電子メールを変更することに加えて:

$ git config --global user.name "Bob"
$ git config --global user.email "bob@example.com"

キーチェーンから認証情報を削除する必要があります。この解決策を理解するには数時間かかりました。キーチェーンにも証明書があることがわかりました。

キーチェーンアクセスを開き、[すべてのアイテム]をクリックしてgitを検索します。すべてのキーチェーンを削除


Windows 7でキーチェーンに対応するものは何ですか?
Thomas Eyde 2017年

わかりませんが、わかります
Muyide Ibukun 2017年

私もここで行き詰まっているようです。ご存知ですか?
Sandeepan Nath 2017

いいえ、最終的にはわかりませんでしたが、それほど難しいことではないと推測しています
Muyide Ibukun

1
キーチェーンから認証情報を削除することについての提案をありがとう
Luja Shrestha '15

7

1台のマシンを使用して、ユーザー名が異なる2つの異なるGitHubアカウントにコードをプッシュしています。すでに1つのアカウントを設定していて、新しいアカウントを追加したいとします。

  1. 新しいSSHキーを生成する ssh-keygen -t rsa -C "myaddress@example.com"
  2. 保存しますが、既存のものを上書きしないように注意してくださいid_rsa。別の名前を付けます。例:id_rsa_another
  3. キーの内容をGitHubアカウントにコピーします。

設定-> SSHおよびGPGキー->新しいSSHキー-> ラベルを付けてキーを貼り付け -> SSHキーを追加

  1. 鍵をsshエージェントに追加します。 ssh-add ~/.ssh/id_rsa_another
  2. GitHubホストをセットアップする:でtouch ~/.ssh/config構成ファイルを作成し、アカウントに構成を提供してファイルを編集します。
#first account
Host github.com-first
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa

#another account
Host github.com-another
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_another

これで、sshエージェントに追加するキーに応じて、さまざまなアカウントからプッシュできるようになります。つまり、最初のアカウントを使用するには、を実行します ssh-add ~/.ssh/id_rsa

ユーザーのメールアドレスを変更することもできます。

git config --global user.email "myaddress@example.com"

または、アカウントの1つにコードを転送するときに権限エラーが発生した場合は、sshキーを消去します。

ssh-add -D


1
はい、すでに複数のアカウントとして設定しています。しかし、どうすれば最初のアカウントでプッシュできますか。コマンドを共有してもらえますか?
codemicky

「どうすればプッシュできる」とはどういう意味ですか?動作しgit pushませんか?キーを追加するとプッシュできるようになります
Tomasz Bartkowiak

各リポジトリプロジェクトのユーザーを設定する必要があります$ git config user.email
jasmintmp

6

Credential Managerに移動しますWindows Credentialsに移動しますGeneric Credentialsの下のエントリを削除しますもう一度接続してみます。


ありがとう。パスはControl Panel\All Control Panel Items\Credential Manager-> Windows Credentialsです。
Saheed 2017年

4

前述のように、

git config user.name her_username
git config user.email her_email

単一のリポジトリのユーザー名と電子メールを手動で設定するには、次のコマンドを追加する必要があります。

git commit --amend --reset-author

変更前にすでにプッシュしようとした場合。それ以外の場合、変更は構成ファイルに表示されません。


本当じゃない。--reset-author(と--...)最後に、最新の構成された名前/メールを入れてコミットし、また、最新のタイムスタンプます。設定ファイルの変更には影響しません。
Ramon Snir 2017

3

次のコマンドを使用して、他のユーザー名の新しいリモートURLを追加できます git remote add origin-username https://username@github.expedia.biz/repository_name.git

この後、を使用してプッシュするgit push -u origin-username master場合は、パスワードの入力を求められます。


2

git config user.nameは、コミットした名前のみを変更します。まだプッシュできません。これは私がそれを解決した方法であり、私は私にとって簡単な方法だと思います。

  1. https://help.github.com/articles/connecting-to-github-with-ssh/を使用するコンピューターにプッシュするユーザー名でSSHキーを生成します

  2. このキーを、https: //help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/にプッシュするgithubユーザーアカウントに追加し ます。

  3. SSHでクローンすることを選択

このユーザーとしてそのレポにプッシュできます。


2

WindowsでユーザーGit for Windowsとmanager資格情報を管理する場合(別名Git-Credential-Manager-for-Windows Link)の、問題は、GitHubをhttps使用してプッシュするときにユーザー間で切り替える簡単な方法がないことです。OAuthトークンです。

その理由は、トークンが次のように保存されるためです。

  • インターネットアドレス: git:https://github.com
  • ユーザー名: Personal Access Token
  • パスワード: OAuth_Token

のURLのバリエーションは機能しInternet Addressません。次に例を示します。

  • git:https://username@github.com
  • git:https://github.com/username
  • ...

解決策:名前空間。これは、の構成の詳細にありますGit-Credential-Manager-for-Windows

それからの引用:

名前空間

保存された資格情報の名前空間を設定します。

デフォルトでは、GCMはすべての保存された資格情報に「git」名前空間を使用します。この構成値を設定すると、グローバルに、またはホストごとに使用される名前空間を制御できます。

git config --global credential.namespace name

次に、資格情報をWindows資格情報マネージャーに次のように保存します。

  • インターネットアドレス: git.username:https://github.com
  • ユーザー名: Personal Access Token
  • パスワード: OAuth_Token

変更したことに注意してください:git-> git.username(変更した場所username実際のユーザー名にするか、そのために一意の識別子として必要なものにします)

次に、特定のエントリを使用するリポジトリ内で、次を実行します。

git config credential.namespace git.username

(再度... username希望の値に置き換えてください)

あなた.git/configは今含まれています:

[credential]
    namespace = git.username

Etvoilá!適切な資格情報がWindows資格情報ストアから取得されます。

もちろん、これはプッシュするユーザー/電子メールを変更しません。そのためには、通常の設定user.nameuser.email


ありがとうございました。これは私(Windows 10)に最適でした。Windows認証情報で他のgitユーザーアカウントが一時的に削除されることはなく、「ハッキング」もありません。すべてのリポジトリに対して1つのグローバル/ホストgitユーザーがいます。そのうちの1つだけが異なる資格情報を必要とする場合を除きます。それが環境にも当てはまる場合は、すべてをWindowsの資格情報のままにして、「特別な」リポジトリに移動し、git config credential.namespace git.username前述のように入力します(ユーザー名の代わり)。次にプッシュする場合、gitはユーザー名の新しい認証情報を要求します。
ford04

2

1台のマシンで2番目のgithub IDを取得する方法を理解できませんでした(これらの回答のいずれもそれではうまくいきませんでした)が、私は複数の異なるgithubアカウントに自分でプッシュする方法を理解しました。

同じユーザー名で、ただし異なるgithubアカウントにプッシュする

  1. 2番目のgithubアカウントに2番目のSSHキーを設定する(同様

  2. したがって、アカウント間の変更:

新しい2番目のgithubアカウントでプッシュする

ssh-add -D
ssh-add ~/.ssh/ssh_key_for_my_2nd_account
git push

メインアカウントでプッシュ

ssh-add -D
ssh-add ~/.ssh/id_rsa   
git push


0

コミットが発生するユーザーIDは、構成ファイルに保管されます。

リポジトリの上部に移動しますvi .git / config

"[remote" origin "]の後にリストされているURL行を適切なユーザーIDに変更します


0

sshを使用して取得する場合

some_username / repository.gitへのアクセスがAlice_usernameに拒否され ました

Alice_usernameとしてプッシュしたくない場合は、Alice_usernameのgithubアカウントにコンピューターのsshキーが追加されていないことを確認してください。

アリスのgithubアカウントからsshキーを削除しましたが、プッシュは機能しました。

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