ฉันจะปิดใช้งาน Git Credential Manager สำหรับ Windows ได้อย่างไร


170

ฉันสังเกตเห็นว่าใน Git เวอร์ชันล่าสุดตอนนี้ค่าเริ่มต้นคือการเปิดกล่องโต้ตอบ "Git Credential Manager สำหรับ Windows" แทนการแจ้งรหัสผ่านให้ฉันที่ Bash prompt ทุกครั้ง

ฉันเกลียดพฤติกรรมนี้มาก ฉันจะปิดการใช้งานและกลับไปที่การป้อนรหัสผ่านที่ Bash shell ทุกครั้งได้อย่างไร

อย่างไรก็ตามฉันไม่ต้องการให้ Git ทำการแคชข้อมูลรับรองของฉันไม่ว่าด้วยวิธีใดก็ตามไม่ว่าจะผ่านข้อมูลประจำตัวของ Windows หรือภูตภายในบางตัว ฉันต้องการที่จะปิดการใช้งานการแคชข้อมูลประจำตัวทั้งหมด

คำตอบ:


211

ตกลงฉันพบว่าคุณต้องหลีกเลี่ยงการตรวจสอบช่องทำเครื่องหมาย "Git Credential Manager" ในระหว่างการติดตั้ง Git สำหรับ Windows หรือ (หลังจากการติดตั้ง) ให้รันเชลล์ Bash ในฐานะผู้ดูแลระบบและใช้git config --edit --systemเพื่อลบhelper = managerบรรทัดเพื่อไม่ให้ลงทะเบียนอีกต่อไป ผู้ช่วยข้อมูลรับรอง

สำหรับคะแนนโบนัสให้ใช้git config --edit --globalและใส่:

[core]
    askpass =

หากต้องการปิดใช้งานป๊อปอัปข้อมูลรับรอง OpenSSH ด้วย


19
ขอบคุณสำหรับคำตอบ สำหรับฉันนี่เป็นครั้งแรกที่ใช้เครื่องมือแก้ไข หากคุณต้องการบันทึกการเปลี่ยนแปลงให้กดปุ่ม Escape และพิมพ์: wq และกด Enter (เขียน / บันทึกและออก)
Ben Besuijen

1
ขอบคุณมาก! ผู้จัดการข้อมูลประจำตัวสับสนกับพร็อกซีเซิร์ฟเวอร์ของงานและทำให้การทำงานกับ Sourcetree เป็นฝันร้าย การปิดใช้งานจะแก้ไขปัญหาได้ทันที
จอห์นนี่

1
และถ้า: wq ไม่ทำงานเหมือนกรณีของฉันใช้ ctrl + z สำหรับการยกเลิกและเลิก แต่สิ่งเหล่านี้อาจทำให้ไฟล์สำรองข้อมูลหลายไฟล์สามารถทำงานได้ในภายหลัง
Adeem

37
หรือเคาะออกด้วยgit config --system --unset credential.helper
Ben Butzer

4
สำหรับผู้ที่ใช้ SourceTree ตรวจสอบให้แน่ใจว่ามีการใช้ GIT รุ่น "system" ไม่ใช่รุ่นที่ฝังอยู่ Tools -> Options -> Git.
Stevanicus

30

ฉันสามารถถอนการติดตั้ง Git Credential Manager สำหรับ Windows โดยใช้ตัวเลือกการถอนการติดตั้ง:

git-credential-manager.exe uninstall

รันคำสั่งนี้ใน C:\Program Files\Git\mingw64\libexec\git-core


1
เพียงแค่นี้คอกม้าและหลังจากที่ผมกด Ctrl-C, ถ่มน้ำลายออกมาใช้งานนี้:git credential [fill|approve|reject]
ScottN

2
@ScottN คุณกำลังทำงานแต่คุณจำเป็นต้องเรียกใช้git-credential.exe git-credential-manager.exe
Aidan Ryan

13

ตัวเลือกอื่นที่ฉันต้องใช้กับ VSTS:

git config credential.modalprompt false --global


3
ขอบคุณ! ฉันพบว่ามีประโยชน์มากเมื่อใช้ ssh เพื่อเชื่อมต่อจากระยะไกลไปยังเซิร์ฟเวอร์ที่ใช้งานจริงของฉัน: ฉันไม่สามารถทำได้git pullเนื่องจากการปอกเปลือก WCM ด้วยตัวเลือกนี้ฉันสนุกกับทั้งสองโลก: WCM เมื่อเชื่อมต่อทางกายภาพกับเซิร์ฟเวอร์ (หรือด้วยเดสก์ท็อประยะไกล) และสามารถดึงจากไคลเอ็นต์ ssh
cbuchart

9

มันไม่ได้ผลสำหรับฉัน:

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

แต่ด้วยการ--forceทำงานของธง:

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

ฉันเห็นร่องรอยนั้นหลังจากรัน:

set git_trace=1

นอกจากนี้ฉันยังเพิ่มชื่อผู้ใช้ Git:

git config --global credential.username myGitUsername

แล้ว:

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

ในที่สุดฉันใส่คำสั่งนี้:

git config --global credential.modalPrompt false

ฉันจะตรวจสอบว่าตัวแทน SSH ทำงานอยู่หรือไม่ - เปิดหน้าต่าง Bash เพื่อเรียกใช้คำสั่งนี้

eval "$(ssh-agent -s)"

จากนั้นในโฟลเดอร์ผู้ใช้คอมพิวเตอร์ / yourName โดยที่. ssh คือเพิ่มการเชื่อมต่อ (ยังอยู่ใน Bash):

ssh-add .ssh/id_rsa

or

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

ฉันตรวจสอบการตั้งค่าทั้งหมดที่ฉันเพิ่มไว้ด้านบน:

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

และเมื่อฉันทำgit pushอีกครั้งฉันต้องเพิ่มชื่อผู้ใช้และรหัสผ่านเป็นครั้งแรกเท่านั้น

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.

ตั้งแต่ใช้git pushมาฉันไม่มีข้อความให้ป้อนข้อมูลรับรอง Git ของฉันอีกต่อไป

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

หลังจากการตั้งค่าเหล่านี้ฉันได้รับอีเมลพร้อมข้อความ:

 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

ผมอยากจะใช้จัดการข้อมูลประจำตัวสำหรับการใช้งานปกติ แต่ฉันมีสคริปต์ที่ผมเห็นได้ชัดว่าไม่ต้องการแจ้งใด ๆ git.exeจาก นี่คือวิธีที่ฉันเรียก Git จากสคริปต์ของฉัน:

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

ด้วยวิธีนี้สคริปต์จะเห็นการตั้งค่าไม่ต้องแจ้ง "ถูกต้อง" โดยไม่ต้องปรับเปลี่ยนการกำหนดค่าใด ๆ

(Git สำหรับ Windows 2.13.3)


รูปแบบที่ฉันพบว่าอาจมีประโยชน์ก็คือการตั้งค่า:

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

แต่โปรดทราบว่าgit.exe -c credential.interactive=never <command> ... ใช้งานไม่ได้ (ดูเหมือนว่า-cสิ่งนั้นไม่ได้ถูกส่งไปยัง Git Credential Manager สำหรับ Windows หรืออะไรก็ตาม)

ด้วยวิธีนี้คุณสามารถใช้ GCMfW ได้ แต่จะไม่แจ้งให้คุณทราบ มันจะค้นหาข้อมูลประจำตัวซึ่งจะมีประโยชน์มากในสภาพแวดล้อมแบบไม่โต้ตอบ



3

อาจจะเป็นปัญหาSourcetree

  1. ไปที่เครื่องมือตัวเลือก

  2. ยกเลิกการเลือก "ตรวจสอบรีโมตเริ่มต้นสำหรับการอัพเดตทุก ๆ [10] นาที"

  3. รีสตาร์ท Sourcetree!


1

และถ้า: wq ไม่ทำงานเหมือนกรณีของฉันใช้ ctrl + z สำหรับการยกเลิกและเลิก แต่สิ่งเหล่านี้อาจทำให้ไฟล์สำรองข้อมูลหลายไฟล์สามารถทำงานได้ในภายหลัง - Ad 19 ม.ค. เวลา 09:14 น

นอกจากนี้อย่าลืมเรียกใช้ Git ในฐานะผู้ดูแลระบบ! มิฉะนั้นไฟล์จะไม่ถูกบันทึก (ในกรณีของฉัน)


1

ฉันพบปัญหาเดียวกันกับUbuntu 18.10 (Cosmic Cuttlefish) ไม่สามารถลบโดยใช้วิธีการปกติ ฉันใช้git config --global --unset credential.helperและดูเหมือนว่าจะทำเคล็ดลับ


1

ภายใต้โฟลเดอร์ "user" c: // user ให้ดูที่ไฟล์ ".gitconfig" จากนั้นลบ http และบรรทัดพรอกซี


1

เพื่อป้องกันการใช้ไดอะล็อกgit config --global credential.modalPrompt falseนั่นจะเป็นการสืบค้นไปยังคอนโซล


0

คุณสามารถลบผู้จัดการข้อมูลประจำตัวได้

C:\Users\<USER>\AppData\Local\Programs\Git\mingw64\libexec\git-core
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.