Bagaimana cara menonaktifkan Git Credential Manager untuk Windows?

170

Saya perhatikan bahwa dalam versi terbaru Git, defaultnya sekarang adalah memunculkan dialog "Git Credential Manager for Windows" alih-alih meminta saya untuk saya kata sandi di Bash prompt setiap kali.

Saya sangat membenci perilaku ini. Bagaimana saya bisa menonaktifkannya dan kembali memasukkan kata sandi di Bash shell setiap saat?

By the way, saya tidak ingin Git caching kredensial saya dengan cara apa pun , baik melalui kredensial Windows atau daemon internal. Saya ingin menonaktifkan semua cache kredensial .

Jez
sumber

Jawaban:

211

OK, saya menemukan bahwa Anda perlu menghindari mencentang kotak "Git Credential Manager" selama installer Git untuk Windows, atau (setelah instalasi) jalankan Bash shell sebagai Administrator dan gunakan git config --edit --systemuntuk menghapus helper = managerbaris sehingga tidak lagi terdaftar sebagai penolong kredensial.

Untuk poin bonus, gunakan git config --edit --globaldan masukkan:

[core]
    askpass =

Untuk menonaktifkan popup kredensial OpenSSH juga.

Jez
sumber
19
Terima kasih atas jawabannya. Bagi saya, ini adalah pertama kalinya menggunakan editor. Jika Anda ingin menyimpan perubahan, tekan tombol escape dan ketik: wq dan tekan enter (tulis / simpan dan keluar).
Ben Besuijen
1
Terimakasih banyak! Manajer kredensial menjadi bingung dengan server proxy pekerjaan saya dan itu membuat bekerja dengan Sourcetree mimpi buruk. Menonaktifkan itu segera memperbaiki masalah.
Johnny
1
dan jika: wq tidak berfungsi seperti
kasing
37
Atau hancurkan dengangit config --system --unset credential.helper
Ben Butzer
4
Bagi mereka yang menggunakan SourceTree pastikan bahwa versi "sistem" dari GIT sedang digunakan, bukan yang tertanam. Tools -> Options -> Git.
Stevanicus
30

Saya dapat menghapus instalan Git Credential Manager untuk Windows menggunakan opsi hapus instalan:

git-credential-manager.exe uninstall

Jalankan perintah ini C:\Program Files\Git\mingw64\libexec\git-core

Ian Mercer
sumber
1
Ini hanya berhenti dan setelah saya menekan ctrl-c, keluarkan penggunaan ini:git credential [fill|approve|reject]
ScottN
2
@ScottN Anda berlari git-credential.exetetapi Anda harus berlari git-credential-manager.exe.
Aidan Ryan
13

Opsi lain yang harus saya gunakan dengan VSTS:

git config credential.modalprompt false --global

Sten Petrov
sumber
3
Terima kasih! Saya merasa sangat berguna ketika menggunakan ssh untuk menghubungkan dari jarak jauh ke server produksi saya: Saya tidak bisa melakukan git pullkarena WCM keluar. Dengan opsi ini saya menikmati kedua dunia: WCM ketika terhubung secara fisik dengan server (atau dengan Remote Desktop), dan mampu menarik dari klien ssh.
cbuchart
9

Itu tidak berhasil untuk saya:

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...

Tetapi dengan --forcebendera itu berhasil:

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...

Saya bisa melihat jejak itu setelah saya jalankan:

set git_trace=1

Saya juga menambahkan nama pengguna Git:

git config --global credential.username myGitUsername

Kemudian:

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

Pada akhirnya saya memasukkan perintah ini:

git config --global credential.modalPrompt false

Saya memeriksa apakah agen SSH sedang berjalan - buka jendela Bash untuk menjalankan perintah ini

eval "$(ssh-agent -s)"

Kemudian di folder pengguna komputer / namaAnda tempat .ssh berada, tambahkan koneksi (masih di Bash):

ssh-add .ssh/id_rsa

or

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

Saya memeriksa semua pengaturan yang saya tambahkan di atas:

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

Dan ketika saya melakukannya git pushlagi saya harus menambahkan nama pengguna dan kata sandi hanya untuk pertama kalinya.

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.

Sejak itu menggunakan git push, saya tidak punya pesan untuk memasukkan kredensial Git saya lagi.

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

Setelah pengaturan ini saya menerima email juga dengan pesan:

 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.
Peter Mortensen
sumber
6

Saya punya masalah itu, dan saya hanya menghapus file git-credential-manager.exe dari:

C:\Program Files\Git\mingw64\libexec\git-core
Henry Vásquez
sumber
6

Saya ingin menggunakan manajer kredensial untuk penggunaan normal, tetapi saya memiliki skrip di mana saya jelas tidak ingin ada permintaan apa pun dari git.exe. Ini adalah bagaimana saya memohon Git dari skrip saya:

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

Dengan cara ini, skrip selalu melihat pengaturan no-prompt "benar" tanpa harus menyesuaikan konfigurasi apa pun.

(Git untuk Windows 2.13.3)


Variasi yang saya temukan yang mungkin juga berguna adalah menyetel:

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> ...

Tapi catatan yang git.exe -c credential.interactive=never <command> ... tidak tidak bekerja (tampaknya bahwa-c masalahnya tidak dialihkan ke Git Credential Manager untuk Windows atau apa pun).

Dengan begitu, Anda bisa menggunakan GCMfW, tetapi itu tidak akan pernah meminta Anda; itu hanya akan mencari kredensial, yang dapat sangat membantu dalam lingkungan non-interaktif.

Martin Ba
sumber
5

Menggunakan:

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

Ini berfungsi pada sistem Windows. Saya mengujinya, dan itu berhasil untuk saya.

Peter Mortensen
sumber
3

Mungkin masalahnya adalah Sourcetree .

  1. Buka AlatPilihan

  2. Hapus tanda centang "Periksa remote remote untuk pembaruan setiap [10] menit"

  3. Mulai ulang Sourcetree!

hatanooh
sumber
1

dan jika: wq tidak berfungsi seperti kasing saya gunakan ctrl + z untuk batalkan dan keluar tetapi ini mungkin akan membuat beberapa file cadangan untuk bekerja nanti - Adeem 19 Jan jam 9:14

Pastikan juga menjalankan Git sebagai Administrator! Kalau tidak, file tidak akan disimpan (dalam kasus saya).

pengguna3437639
sumber
1

Saya menemukan masalah yang sama pada Ubuntu 18.10 (Cosmic Cuttlefish), tidak dapat menghapus menggunakan cara normal. Saya menggunakan git config --global --unset credential.helper, dan itu tampaknya melakukan trik.

nakal
sumber
1

Di bawah folder "pengguna" c: // pengguna, lihat file ".gitconfig" lalu hapus garis http dan proxy.

pengguna3642831
sumber
1

Untuk mencegah penggunaan dialog git config --global credential.modalPrompt false, itu akan mengarahkan kueri ke konsol.

Mahdi Afzal
sumber
0

Anda cukup menghapus Credential Manager.

C:\Users\<USER>\AppData\Local\Programs\Git\mingw64\libexec\git-core
Caio Borges
sumber