Wie deaktiviere ich Git Credential Manager für Windows?


170

Ich stelle fest, dass in der neuesten Version von Git jetzt standardmäßig ein Dialogfeld "Git Credential Manager für Windows" angezeigt wird, anstatt mich jedes Mal an der Bash-Eingabeaufforderung zur Eingabe meines Kennworts aufzufordern.

Ich hasse dieses Verhalten wirklich. Wie kann ich es einfach deaktivieren und jedes Mal das Passwort in der Bash-Shell eingeben?

Übrigens möchte ich nicht, dass Git meine Anmeldeinformationen in irgendeiner Weise zwischenspeichert , sei es über Windows-Anmeldeinformationen oder einen internen Daemon. Ich möchte das Zwischenspeichern von Anmeldeinformationen deaktivieren .

Antworten:


211

OK, ich habe festgestellt, dass Sie entweder vermeiden müssen, das Kontrollkästchen "Git Credential Manager" während des Git for Windows-Installationsprogramms zu aktivieren, oder (nach der Installation) die Bash-Shell als Administrator ausführen und git config --edit --systemdie helper = managerZeile entfernen müssen , damit sie nicht mehr als registriert wird ein Helfer für Anmeldeinformationen.

Für Bonuspunkte verwenden git config --edit --globalund einfügen:

[core]
    askpass =

So deaktivieren Sie auch das Popup für OpenSSH-Anmeldeinformationen.


19
Danke für deine Antwort. Für mich war dies das erste Mal, dass ich den Editor benutzte. Wenn Sie Änderungen speichern möchten, drücken Sie die Escape-Taste und geben Sie Folgendes ein: wq und drücken Sie die Eingabetaste (Schreiben / Speichern und Beenden).
Ben Besuijen

1
Danke vielmals! Der Anmeldeinformationsmanager wurde mit dem Proxyserver meiner Arbeit verwechselt und machte die Arbeit mit Sourcetree zu einem Albtraum. Durch Deaktivieren wurde das Problem sofort behoben.
Johnny

1
und wenn: wq nicht wie in meinem Fall funktioniert, verwenden Sie Strg + z zum Abbrechen und Beenden, aber diese werden wahrscheinlich mehrere Sicherungsdateien erstellen, mit denen später gearbeitet werden kann
Adeem

37
Oder schlagen Sie es mitgit config --system --unset credential.helper
Ben Butzer

4
Stellen Sie für Benutzer von SourceTree sicher, dass die "System" -Version von GIT verwendet wird, nicht die eingebettete. Tools -> Options -> Git.
Stevanicus

30

Ich konnte den Git Credential Manager für Windows mithilfe der Deinstallationsoption deinstallieren:

git-credential-manager.exe uninstall

Führen Sie diesen Befehl in aus C:\Program Files\Git\mingw64\libexec\git-core


1
Dies bleibt stehen und nachdem ich Strg-C gedrückt habe, spuckt diese Verwendung aus:git credential [fill|approve|reject]
ScottN

2
@ScottN Sie laufen, git-credential.exeaber Sie müssen laufen git-credential-manager.exe.
Aidan Ryan

13

Eine weitere Option, die ich mit VSTS verwenden musste:

git config credential.modalprompt false --global


3
Vielen Dank! Ich fand es sehr nützlich, wenn ich ssh verwendete, um eine Remoteverbindung zu meinem Produktionsserver herzustellen: Ich konnte dies nicht tun, git pullda das WCM ausfiel. Mit dieser Option genieße ich beide Welten: WCM, wenn es physisch mit dem Server (oder mit Remotedesktop) verbunden ist und von einem SSH-Client abgerufen werden kann.
Cbuchart

9

Bei mir hat es nicht funktioniert:

C:\Program Files\Git\mingw64\libexec\git-core
git-credential-manager.exe uninstall

Looking for Git installation(s)...
  C:\Program Files\Git

Updated your /etc/gitconfig [git config --system]
Updated your ~/.gitconfig [git config --global]

Removing from 'C:\Program Files\Git'.
  removal failed. U_U

Press any key to continue...

Aber mit der --forceFlagge hat es funktioniert:

C:\Program Files\Git\mingw64\libexec\git-core
git credential-manager uninstall --force
08:21:42.537616 exec_cmd.c:236          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
e
08:21:42.538616 git.c:576               trace: exec: git-credential-manager uninstall --force
08:21:42.538616 run-command.c:640       trace: run_command: git-credential-manager uninstall --force

Looking for Git installation(s)...
  C:\Program Files\Git

Updated your /etc/gitconfig [git config --system]
Updated your ~/.gitconfig [git config --global]


Success! Git Credential Manager for Windows was removed! ^_^

Press any key to continue...

Ich konnte diese Spur sehen, nachdem ich ausgeführt habe:

set git_trace=1

Außerdem habe ich den Git-Benutzernamen hinzugefügt:

git config --global credential.username myGitUsername

Dann:

C:\Program Files\Git\mingw64\libexec\git-core
git config --global credential.helper manager

Am Ende habe ich diesen Befehl eingegeben:

git config --global credential.modalPrompt false

Ich überprüfe, ob der SSH-Agent ausgeführt wird. Öffnen Sie ein Bash-Fenster, um diesen Befehl auszuführen

eval "$(ssh-agent -s)"

Fügen Sie dann im Ordner computer users / yourName, in dem sich .ssh befindet, eine Verbindung hinzu (noch in Bash):

ssh-add .ssh/id_rsa

or

ssh-add ~/.ssh/id_rsa(if you are not in that folder)

Ich habe alle Einstellungen überprüft, die ich oben hinzugefügt habe:

C:\Program Files\Git\mingw64\libexec\git-core
git config --list
09:41:28.915183 exec_cmd.c:236          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-cor
e
09:41:28.917182 git.c:344               trace: built-in: git config --list
09:41:28.918181 run-command.c:640       trace: run_command: unset GIT_PAGER_IN_USE; LESS=FRX LV=-c less
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
http.sslbackend=openssl
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
credential.helper=manager
credential.modalprompt=false
credential.username=myGitUsername

Und als ich es git pushwieder tat, musste ich nur zum ersten Mal Benutzername und Passwort hinzufügen.

git push
Please enter your GitHub credentials for https://myGithubUsername@github.com/
username: myGithubUsername
password: *************
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 316 bytes | 316.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.

Seitdem git pushhabe ich nicht mehr die Nachricht, meine Git-Anmeldeinformationen einzugeben.

D:\projects\react-redux\myProject (master -> origin) (budget@1.0.0)
λ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 314 bytes | 314.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/myGitUsername/myProject.git
   8d38b18..f442d74  master -> master

Nach diesen Einstellungen erhielt ich auch eine E-Mail mit der Nachricht:

 A personal access token (git: https://myGitHubUsername@github.com/
on LAP0110 at 25-Jun-2018 09:22) with gist and repo scopes was recently added
to your account. Visit https://github.com/settings/tokens for more information.

6

Ich hatte dieses Problem und habe nur die Datei git-credential-manager.exe entfernt von:

C:\Program Files\Git\mingw64\libexec\git-core

6

Ich wollte den Anmeldeinformations-Manager für den normalen Gebrauch verwenden, aber ich habe Skripte, von denen ich offensichtlich keinerlei Eingabeaufforderungen möchte git.exe. So rufe ich Git aus meinen Skripten auf:

set GIT_TERMINAL_PROMPT=0
git -c core.askpass= -c credential.helper= <command> ...

Auf diese Weise sieht das Skript immer die "richtige" Einstellung ohne Eingabeaufforderung, ohne dass eine Konfiguration angepasst werden muss.

(Git für Windows 2.13.3)


Eine Variation, die ich gefunden habe und die auch nützlich sein könnte, ist das Einstellen von:

set GCM_INTERACTIVE=never
# Or: git config --global credential.interactive never

set GIT_TERMINAL_PROMPT=0
git.exe -c core.askpass= -c credential.helper=manager <command> ...

Beachten Sie jedoch, dass git.exe -c credential.interactive=never <command> ... dies nicht funktioniert (es scheint, dass das -cDing nicht an Git Credential Manager für Windows oder was auch immer weitergeleitet wird).

Auf diese Weise Sie können die GCMfW verwenden, aber es wird nie prompt; Es werden nur die Anmeldeinformationen nachgeschlagen, was in nicht interaktiven Umgebungen sehr hilfreich sein kann.


5

Verwenden:

C:\Program Files\Git\mingw64\libexec\git-core                                                                       
git credential-manager uninstall --force    

Dies funktioniert auf Windows-Systemen. Ich habe es getestet und es hat bei mir funktioniert.


3

Vielleicht ist das Problem Sourcetree .

  1. Gehen Sie zu ExtrasOptionen

  2. Deaktivieren Sie "Standardfernbedienungen alle [10] Minuten auf Updates prüfen".

  3. Starten Sie Sourcetree neu!


1

und wenn: wq nicht wie in meinem Fall funktioniert, verwenden Sie Strg + z zum Abbrechen und Beenden, aber diese werden wahrscheinlich mehrere Sicherungsdateien erstellen, mit denen später gearbeitet werden kann - Adeem 19. Januar um 9:14 Uhr

Stellen Sie außerdem sicher, dass Sie Git als Administrator ausführen! Andernfalls wird die Datei nicht gespeichert (in meinem Fall).


1

Ich habe das gleiche Problem unter Ubuntu 18.10 (Cosmic Cuttlefish) festgestellt, das mit normalen Mitteln nicht entfernt werden konnte. Ich habe es benutzt git config --global --unset credential.helper, und das schien den Trick zu tun.


1

Sehen Sie sich im Ordner "user" c: // user die Datei ".gitconfig" an und entfernen Sie die http- und Proxy-Zeile.


1

Um die Verwendung des Dialogfelds zu verhindern git config --global credential.modalPrompt false, werden die Abfragen an die Konsole weitergeleitet.


0

Sie können den Anmeldeinformations-Manager einfach löschen.

C:\Users\<USER>\AppData\Local\Programs\Git\mingw64\libexec\git-core
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.