Gitから資格情報を削除する


623

私はいくつかのリポジトリで作業していますが、最近は社内リポジトリで作業しているだけで、すべてが素晴らしかったです。

今日、コードをコミットして他のコードにプッシュする必要がありましたが、いくつか問題があります。

$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://gavekortet@appharbor.com/mitivo.git/info/refs?service=git-receive-pack
fatal: HTTP request failed

私ができることは何もありません、それは再びパスワード入力をもたらすでしょう。

システムの資格情報をリセットして、Gitがリポジトリのパスワードを要求するようにするにはどうすればよいですか?

私が試してみました:

  • git config --global --unset core.askpass

パスワードを解除するには

  • git config credential.helper 'cache --timeout=1'

資格情報のキャッシュを回避するために...

何も動作しないようです。誰かがより良いアイデアを持っていますか?


~/.netrcファイルはありますか?
— robinst 2013年

2
@robinstそれはWindowsマシンであり、Git Bashからでもそのファイルを見つけることができません...
— balexandre

Windowsマシンの@balexandre では、暗号化されたファイルに複数の資格情報netrcを格納する新しい(git 1.8.3)資格情報ヘルパーを使用します。キャッシュは特定の時間のみパスワードを「キャッシュ」するため、各セッションで毎回パスワードを入力するよりも優れています。ここで完全な例を参照してください。
— VonC 2013

.netrcがありません。〜(C:\ Users \ Myself)に.git-credentialsという名前のファイルがありますが、それを消去しても機能しませんでした。それでもGitシェルにログインしています。また、コントロールパネルの資格情報マネージャーには何も保存されていないようです。ローカルおよびグローバルのGit構成ファイルは問題ないようです。私は退職した従業員からワークステーションを引き継いだので、彼が私がオフにする方法がわからない、正統でないクレデンシャルキャッシングメカニズムをセットアップした可能性があります。この動作がGit Windowsのデフォルトではないことを願っています。Macでは資格情報のキャッシュがデフォルトですが、少なくともキーチェーンアクセスには表示されます。
— damix911 2015年

Linux、Windows、Mac OS Xでも機能するより完全な回答は、stackoverflow.com
— a / 39944557/3906760を

回答:


654

この問題がWindowsマシンで発生する場合は、次の手順を実行します。

  • 資格情報マネージャーに移動
  • Windows資格情報に移動
  • Generic Credentialsの下のエントリを削除します
  • もう一度接続してみてください。今回は、正しいユーザー名とパスワードの入力を求められるはずです。

資格情報マネージャーに移動

Windows資格情報に移動し、一般的な資格情報の下のエントリを削除します


4
お使いの場合にのみ関連しますcredential.helper=manager。このタイプをテストするにはgit config --list。に設定されているstore場合、資格情報は資格情報ストアに保存されず、暗号化されずに保存されます。
— リアム2017

3
名前を付けた資格情報を削除するだけでgit:https://github.com、次にPyCharmを使用してリポジトリを複製したときに、ユーザー名とパスを入力するように求められました。私は複数のgithubアカウントを持っていて、間違ったアカウントがキャッシュされました。
— dotcomly

22
誰かがドイツ語にローカライズされたマシンでこれを検索している場合、それはパス上の"Anmeldeinformationsverwaltung"Systemsteuerung\Alle Systemsteuerungselemente\Anmeldeinformationsverwaltungです。
— davidenke 2018年

3
または、でユーザー/パスを変更することもできますCredential Manager。それも私にとっては
— うまくいった

認証情報を削除すると、403Bitbucketでエラーが解決しました。
— Eido95 2018

673

Git資格情報キャッシュは、資格情報をメモリにキャッシュし、要求に応じてそれらを渡すデーモンプロセスを実行します。したがって、git-credential-cache--daemonプロセスを強制終了すると、これらすべてが破棄され、これをcache.helperオプションとして引き続き使用すると、パスワードの再入力を求められます。

を使用して、Git資格情報キャッシュの使用を無効にすることもできますgit config --global --unset credential.helper。次に、これをリセットすると、キャッシュされた資格情報を他のリポジトリ(存在する場合)で引き続き使用できるようになります。git config --system --unset credential.helperこれがシステム構成ファイル(たとえば、Git for Windows 2)で設定されている場合も、実行する必要があります。

Windowsでは、マネージャーヘルパー(git config --global credential.helper manager)を使用した方がよい場合があります。これにより、資格情報がWindows資格情報ストアに保存されます。Windows資格情報ストアには、保存されている資格情報を削除または編集できるコントロールパネルインターフェイスがあります。このストアを使用すると、詳細はWindowsログインによって保護され、複数のセッションにわたって保持できます。マネージャのWindows 2.xのためのGitに含まヘルパーは、以前に置き換えたwincredのWindows 1.8.1.1用のGitで追加されたヘルパーを。winstoreと呼ばれる同様のヘルパーもオンラインで入手でき、よりGUI駆動のインターフェースを提供するため、GitExtensionsで使用されました。マネージャーのヘルパーは同じGUIインターフェイス提供していますwinstoreを。

Windows資格情報マネージャーの詳細を示すWindows 10サポートページからの抜粋:

資格情報マネージャーを開くには、タスクバーの検索ボックスに「資格情報マネージャー」と入力し、資格情報マネージャーコントロールパネルを選択します。

次に、Windows資格情報を選択して、特定のURLに保存されているgit資格情報を編集(=削除または変更)します。


197
Control Panel\User Accounts\Credential ManagerWindows 7の下でWindows資格情報コントロールパネルを見つけました
— Steve Pitchers

2
プロセスを強制終了しても、どこかに痕跡が残り、パスワードに引き続きアクセスできるようになりますか?gitマニュアルによると、これらは「プレーンテキスト」で保存されています。
— Ufos 2016年

1
Windows 8.1では、「Windows Credentials」はGeneric Credentialsおよびgit:gitlab.comまたは選択したgitサーバーの下にありました。
— ジェフ

5
Windows 8/10では、詳細なユーザーアカウント設定は、「設定」アプリ(モダンUI)ではなく、「クラシック」コントロールパネルの下にあります。混乱を避けるためだけに。
— DanielH 2016年

1
Windows 10の場合コントロールパネル\すべてのコントロールパネルアイテム\クレデンシャルマネージャーに移動します。GitHubの汎用認証情報が存在する可能性があります。そこでユーザー名とパスワードを更新できます。
— Eldhose Abraham 2018

155

再入力:

$ git config credential.helper store

次に、資格情報を再度入力するように求められます。

警告

このヘルパーを使用すると、パスワードが暗号化されずにディスクに保存されます

ソース:https : //git-scm.com/docs/git-credential-store


35
このコマンドは私の資格情報を再度入力するように求めません。このコマンドは何もしません
— Shirish Herwade 2017年

3
@ShirishHerwade git pullを実行すると、プロンプト画面が表示されます
— ismailcem

2
@jkokorianこのコマンドを元に戻すには、関連する行をから削除します.git/config。
— Zenadix

110

OPと同じ問題に直面しました。システムのどこかに保存されている古いGit資格情報を取得していたため、新しい資格情報でGitを使用したいので、コマンドを実行しました

$ git config --system --list

それは示した

credential.helper=manager

私がgit pushそれを実行したときはいつでも、以前に設定した古いユーザー名を使用していたため、新しいGitHubアカウントを使用して変更をプッシュしたいと思っていました。私は後で私の古いGitHubのアカウントの資格情報が下に格納されていることがわかっ コントロールパネル → ユーザーアカウント → 資格情報マネージャ ]→[ Windowsの資格情報を管理します。

Windows資格情報を管理する

これらの認証情報を削除git pushしたところ、実行するとGitHubの認証情報を求められました。


資格情報(github.com/Microsoft/Git-Credential-Manager-for-Windows/を格納することで機能する最近のGit Credential Manager(github.com/Microsoft/Git-Credential-Manager-for-Windows)の良い例問題/…)+1
— VonC 2016

1
@VonC資格情報を保存するこのメカニズムを知らなかったので、これを見つけるのに1日かかりました。
— Mourya 2016

確かにかなり最近のことです。ここで言及していただきありがとうございます。
— VonC

これはおそらく、「受け入れられた」ものよりも良い答えです。私にとって、これはすべての資格情報を中傷することを意味します。間違いなく私を助けました。
— VictorLegros

52

以下のコマンドを使用してみてください。

git credential-manager

ここでは、資格情報を管理するためのさまざまなオプションを取得できます(以下の画面を確認してください)。

ここに画像の説明を入力してください

または、次のコマンドを直接試すこともできます。

git credential-manager uninstall

これにより、サーバーとの対話要求ごとにパスワードのプロンプトが再度表示されます。


10
なぜ取得するのですかgit: 'credential-manager' is not a git command. See 'git --help'.
— サイカット2017

2
よくわかりませんが、なぜ機能しないのですか?しかし、最新のgitバージョンでも使用できます。詳細については、このリンクを参照してください-git-scm.com/book/gr/v2/Git-Tools-Credential-Storage
— Himanshu Aggarwal

3
手に入れたremoval failed. U_U Press any key to continue... fatal: InvalidOperationException encountered. Cannot read keys when either application does not have a console or when console input has been redirected from a file. Try Console.Read.(U_Uどこからともなく素敵な絵文字を使って:))
— jeromej 2017

1
WindowsでGitBashを使用して動作した唯一のソリューション。
— alain.janinm

余談かもしれませんが、choco経由でgitをインストールしました。この[アンインストール]メソッドは、資格情報を保存せずにデプロイされたコンピューターでリポジトリをプルするのに適していました
— beep_check

32

私はうまくいくものを見つけました。OPにコメントを書き込んだとき、システム構成ファイルを確認できませんでした。

git config --system -l

示しています

credential.helper=!github --credentials

ライン。私はそれを解除しました

git config --system --unset credential.helper

そして今、資格情報が忘れられています。


2
Ankurさん、いくつかの資格情報ヘルパーを構成している場合、提案されたコマンドを同様の方法で2〜3回実行する必要があるかもしれません。git config --global --unset credential.helperそして多分ちょうどgit config --unset credential.helperあなたのリポジトリにあなたは何とかそこに明示的に設定していた場合。
— dragon788

解決策をありがとう。ほんの詳細:私の場合、管理者としてコマンドプロンプトを起動する必要がありました
— A.Joly

30

私の場合、Gitは資格情報を保存するためにWindowsを使用しています。

あなたがしなければならないすべてはあなたのWindowsアカウントに保存されている保存された資格情報を削除することです:

Windows資格情報メニュー


1
これはこの回答とどのように異なりますか?それともこれ?
— Liam

20
git config --list

表示されますcredential.helper = manager(これはWindowsマシン上にあります)

現在のローカルgitフォルダーに対してこのキャッシュされたユーザー名/パスワードを無効にするには、次のように入力します。

git config credential.helper ""

このように、gitは毎回パスワードを要求し、「マネージャー」内に保存されているものを無視します。


私は以下のエラーがありますgit: 'credential-' is not a git command. See 'git --help'.が、セキュリティのために、新しいパスワードの入力を求められたのはこの回答のみであるため、私はこの回答を賛成しています。しかし、これが問題を隠しているだけではないのでしょうか(パスワードは本当に削除されていますか?)
— ribamar

いいえ:rm -rf ~/.git-credentialsしました。変化する可能性があることに注意してください(git help credential-store)
— ribamar

申し訳ありませんが、これは実際には機能しません。もう一度パスワードを要求し、再度保存します。許可された場合、私の賛成票を削除します。
— リバマー

git config --unset credential.helperエントリをクリアします。この答えは、それを空の文字列に設定し、@ ribamarがコメントに記述したエラーを生成するだけです。
— ダークキャッスル

15

「wincred」*を備えたWindows 2003 Serverでは、他のどの回答も役に立ちませんでした。私は使用しなければなりませんでしたcmdkey。

  • cmdkey /list 保存されているすべての資格情報をリストします。
  • cmdkey /delete:Target 「ターゲット」名の資格情報を削除します。

cmdkey / list;  cmdkey / delete:Target

(* "wincred"とはgit config --global credential.helper wincred)


はい、cmdkey選択した回答で説明されているWindows資格情報に対応するコマンドラインです。
— nicobo

15

このエラーは、同じマシンで複数のGitアカウントを使用している場合に表示されます。

macOSを使用している場合は、保存されているgithub.comの認証情報を削除できます。

以下の手順に従ってgithub.comの認証情報を削除してください。

  1. キーチェーンアクセスを開く
  2. githubを探す
  3. github.comを選択して右クリックします
  4. 「github.com」を削除
  5. もう一度gitにプッシュまたはプルすると、認証情報が要求されます。
  6. リポジトリアカウントの有効な認証情報を入力してください。
  7. できた

    ここに画像の説明を入力してください


おかげで、これは完全にMac OSで機能しています
— babygame0ver

13

それぞれのgithubでログインする必要がusernameあり、password

Windowsでユーザー名とパスワードをクリアするには

コントロールパネル\ユーザーアカウント\資格情報マネージャー

Windows資格情報を編集する

既存のユーザーを削除し、コマンドプロンプトに移動して、username/ emailおよびを入力するためのgithubポップアップを表示するpushコマンドを記述しますpassword。

これで、ユーザーを切り替えた後にコードをプッシュできます。


13

「git pull」を実行すると同じエラーが発生し、これが私が修正した方法です。

  1. リポジトリをHTTPSに変更する
  2. コマンドを実行 git config --system --unset credential.helper
  3. コマンドを実行 git config --system --add credential.helper manager
  4. テストコマンド git pull
  5. ポップアップ表示されるログインウィンドウに認証情報を入力します。
  6. Gitプルが正常に完了しました。

- システム?--globalはどうですか?スコープなしについてはどうですか?設定スコープとはどういう意味ですか?
— masterxilo

ステップ1だけで問題が解決しました。
— zzxwill

11

Windowsの現在ログインしているユーザーフォルダーにある.gitconfigファイルからこの行を削除します。

[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"

これは私にとってはうまくいきました、そして今私がリモートにプッシュするとき、それは私のパスワードを再び尋ねます。


11

Credential Managerで更新する必要があります。

[コントロールパネル]> [ユーザーアカウント]> [資格情報マネージャー]> [Windows資格情報]に移動します。リストにGit認証情報が表示されます(例:git:https://)。それをクリックして、パスワードを更新し、Git bashからgit pull / pushコマンドを実行すると、それ以上エラーメッセージはスローされません。



10

Windows 10 Professionalで最新バージョンのgit for Windowsを使用していて、同様の問題がありました。2つの異なるGitHubアカウントと1つのBitbucketアカウントがあり、VS2017、git拡張機能、およびgit bashについて少し混乱しています。

私は最初にこのコマンドでgitが私の資格情報をどのように処理しているかを確認しました(昇格したコマンドでgit bashを実行すると、エラーが発生します)。

git config --list

「資格情報マネージャー」というエントリを見つけたので、「スタート」ボタンをクリックし、「資格情報マネージャー」と入力して、アプリを起動した資格情報マネージャーの黄色の安全なアイコンを左クリックしました。次にWindows Credentialsタブをクリックして、たまたまBit-bucketである現在のgitアカウントのエントリを見つけたので、このアカウントを削除しました。

しかし、これはうまくいかなかったので、次の手順は資格情報の設定を解除することでした。私は、リモートにプッシュしようとしているGitHubプロジェクトを含むラップトップのリポジトリディレクトリからこれを行いました。次のコマンドを入力しました。

git config --system --unset credential.helper

次にgit pushを実行し、入力したGitHubユーザー名(必要な正しいユーザー名)と、関連するパスワードとすべてが正しくプッシュされるように求められました。

これが今後どの程度の問題になるかはわかりませんが、ほとんどの人はおそらく1つのリポジトリで作業しますが、複数のプロバイダーで作業し、異なるプロバイダーを使用する必要があるため、この問題が再び発生する可能性があります。


私のために働きました..ありがとう
— Krishnamoorthy Acharya

8

私の場合、Windows資格情報マネージャー(Windows 7)に保存されている資格情報が見つかりませんでした。

実行することで資格情報をリセットできました

git config --global credential.helper wincred

正直なところ、それが私の資格情報を消してしまうかどうかを確認するのは、メアリーさんです。


これでうまくいきました。Credential Managerに削除するエントリがありませんでした。
— bdwakefield 2017

7

gitの認証情報を削除するにはcredential.helper=!github --credentials、次のファイルから行C:\Program Files\Git\mingw64\etc\gitconfigを削除します


7
  1. に行く C:\Users\<current-user>
  2. .git-credentialsファイルを確認
  3. 要件に従ってコンテンツを削除または変更します
  4. 端末を再起動します

私のために働いた唯一の解決策
— Wachburn

7

Windowsでは、少なくとも、git remote show [remote-name]動作しますが、たとえば、

git remote show origin

なぜ反対票かはわかりません。それは動作します。他のすべてに行き詰まっています。
— Jason S

...そして私は今日もそれをうまく使いました。職場でパスワードを変更するたびに、これを行う必要があります。
— Jason S

2
私にとっては魅力的でした。
— IronAces

こっちも一緒。リポジトリディレクトリにいる必要はありません
— Nicola Musatti

6

保存した古い認証情報をgitで忘れてユーザー名とパスワードを再入力する場合は、以下のコマンドを使用して実行できます。

git credential-cache exit

上記のコマンドを実行した後、何かをプッシュしようとすると、ユーザー名とパスワードを入力するオプションが表示されます。


3

最後にこれを修正したのは、GitHubデスクトップを使用して、リポジトリ設定に移動し、リポジトリURLからuser:pass @を削除することでした。次に、コマンドラインからプッシュしようとすると、ログイン資格情報の入力を求められました。私がそれらを入れた後、すべてが正常に戻りました。Visual Studioとコマンドラインの両方が機能しています。もちろん、GitHubデスクトップも機能しています。

GitHubデスクトップ->リポジトリ->リポジトリ設定-> [リモート]タブ

プライマリリモートリポジトリ(オリジン)を次から変更:

https://pork@muffins@github.com/MyProject/MyProject.git

に:

https://github.com/MyProject/MyProject.git

「保存」をクリック

資格情報は消去されます。


Windowsのコマンドラインからオリジンを同じものにリセットすると、問題が解決しました。私はGitLabを使用しているため、GitHubデスクトップを使用できませんでした。
— デビッドバルガス

3

macOSユーザーの場合:

このエラーは、同じマシンで複数のGitアカウントを使用している場合に表示されます。

以下の手順に従ってgithub.comの認証情報を削除してください。

  1. ファインダーに移動
  2. アプリケーションに移動
  3. ユーティリティフォルダに移動
  4. キーチェーンアクセスを開く
  5. github.comを選択して右クリックします

    「github.com」を削除

もう一度gitにプッシュまたはプルすると、認証情報が要求されます。リポジトリアカウントの有効な認証情報を入力してください。できた


3

Windows 10の場合、以下のパスに移動します。

コントロールパネル\ユーザーアカウント\資格情報マネージャー

この場所には2つのタブがあります。

  1. Web資格情報と2. Windows資格情報。

[Windows資格情報]タブをクリックすると、「汎用資格情報」という見出しの下に、保存されているgithub資格情報が表示されます。

ここからそれらを削除して、再クローンしてみてください-Windows 10システムから保存された資格情報を削除したので、ユーザー名/パスワードを要求します。


2

WindowsキャッシュのGit Credentials Managersをクリアするには:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

または

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache

2

上記のように何もうまくいかないときにこれを試してください。

git config credential.helper 'cache --timeout=30'

これにより、3秒ごとにキャッシュが削除され、ユーザー名とパスワードが要求されます。タイムアウト値を増やしてコマンドを再実行できます。


1

私たちの場合、ユーザーの.git-credentialsファイルのパスワードをクリアするとうまくいきました。

c:\users\[username]\.git-credentials

はい、他の何人かの人々がすでにこれを何度も述べています
— リアム

1

@patthoytsの投票数の多い回答から構築(https://stackoverflow.com/a/15382950/4401322):

彼の答えは「ローカル」、「グローバル」、「システム」の設定を使用していますが、説明していません。それらの公式のgitドキュメントはここにあり、読む価値があります。

たとえば、私はLinuxを使用していて、システム構成を使用していないため、--systemフラグを使用することはありませんが、通常、--localと--global構成を区別する必要があります。

私の使用例は、2つのGithub資格情報を持っていることです。1つは仕事用、もう1つは遊び用です。

これが私が問題を処理する方法です:

$ cd work
# do and commit work
$ git push origin develop
# Possibly prompted for credentials if I haven't configured my remotes to automate that. 
# We're assuming that now I've stored my "work" credentials with git's credential helper.

$ cd ~/play 
# do and commit play
$ git push origin develop                                                                   
remote: Permission to whilei/specs.git denied to whilei.                
fatal: unable to access 'https://github.com/workname/specs.git/': The requested URL returned error: 403

# So here's where it goes down:
$ git config --list | grep cred
credential.helper=store # One of these is for _local_
credential.helper=store # And one is for _global_

$ git config --global --unset credential.helper
$ git config --list | grep cred
credential.helper=store # My _local_ config still specifies 'store'
$ git config --unset credential.helper
$ git push origin develop
Username for 'https://github.com': whilei
Password for 'https://whilei@github.com':
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 1.10 KiB | 1.10 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/whilei/specs.git
   b2ca528..f64f065  master -> master

# Now let's turn credential-helping back on:
$ git config --global credential.helper "store"
$ git config credential.helper "store"
$ git config --list | grep cred
credential.helper=store # Put it back the way it was.
credential.helper=store

また、この問題を完全に回避する方法があることにも注意する必要があります。たとえば、~/.ssh/configGithubに関連付けられたSSHキー(1つは仕事用、もう1つは遊び用)と対応するカスタム名のリモートホストを使用して、認証のコンテキスト化を解決することもできます。


1

@ericbnのhttps://stackoverflow.com/a/41111629/579827に追加するには、すべてのパスワードが更新されるたびにすべてのパスワードを更新するために実行するスクリプトに埋め込んだサンプルコマンドを次に示します。非常に具体的であるため、おそらく現状では使用できませんが、実際の使用方法を示していますcmdkey.exe。

⚠これはcygwinで実行されるシェルスクリプトです⚠

⚠これは、すべて同じパスワードで認証するプライベートgitリポジトリを使用しているため機能します(おそらく、同じ資格情報でループする必要はありませんが、このサンプル/listコマンドを再利用して、既に登録されている資格情報のリストを抽出できます)⚠

entries=`cmdkey.exe /list: | grep git | sed -r -e 's/^[^:]+:\s*(.*)$/\1/gm'`
for entry in ${entries}
do
    cmdkey.exe "/delete:${entry}"
    cmdkey.exe "/generic:${entry}" "/user:${GIT_USERNAME}" "/pass:${GIT_PASSWORD}"
done

0

キーペアを使用して認証されている場合は、秘密キーを削除または移動するか、キーエージェントを停止して試行できます。


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