git: 'credential-cache' ไม่ใช่คำสั่ง git


264

ฉันทำตามคำแนะนำเหล่านี้กับจดหมายรวมถึงส่วนที่เกี่ยวกับการแคชรหัสผ่าน ดูเหมือนว่าคำแนะนำจะผิดเพราะทุกครั้งที่git push origin masterฉันได้รับข้อผิดพลาดนี้:

git: 'credential-cache' is not a git command. See 'get --help'.

... ณ จุดนี้ฉันถูกบังคับให้ป้อนชื่อผู้ใช้และรหัสผ่านของฉัน git pushหลังจากทำเช่นนั้นฉันกำลังนำเสนอด้วยข้อผิดพลาดเดียวกันอีกครั้งตามด้วยการส่งออกจาก

นี่คือเนื้อหาของไฟล์. gitconfig ของฉัน:

[user]
    name = myusername
    email = myusername@myemaildomain.com
[credential]
    helper = cache

เพื่อความชัดเจนหลังจากที่ฉันติดตั้ง Git และรัน Git Bash นี่คือสิ่งที่ฉันพิมพ์:

git config --global user.name "myusername"
git config --global user.email "myusername@myemaildomain.com"
git config --global credential.helper cache

กรุณาช่วย. มันช่างน่าหงุดหงิดเหลือเกิน!


53
หากต้องการลบข้อความ "git: 'credential-cache' ไม่ใช่คำสั่ง git" ให้เรียกใช้ "git config --global --unset credential.helper" จากนั้นคุณสามารถทำตามคำแนะนำด้านล่าง
Wallace Kelly

5
@Wally +1 ขอบคุณคำสั่งของคุณใช้ได้กับฉันหลังจากลบออก--globalแล้วเท่านั้น
Web_Designer


1
คุณสามารถลบข้อความโดยการแก้ไขไฟล์. git / config ด้วยตนเอง (เช่นลบบรรทัดด้านล่าง [ข้อมูลประจำตัว])
tarikakyol

FWIW สำหรับผู้อ่านข้อเสนอแนะต่าง ๆ ของ Windows ด้านล่างgit config credential.helper cache ได้ทำงานให้ฉันด้วย Cygwin คอมไพล์รุ่น 2.13.2
Flash Sheridan

คำตอบ:


323

จากบล็อกที่ฉันพบ :

"[git-credential-cache] นี้ใช้ไม่ได้กับระบบ Windows เนื่องจาก git-credential-cache สื่อสารผ่านซ็อกเก็ต Unix"

Git สำหรับ Windows

เนื่องจาก msysgit ถูกแทนที่โดย Git สำหรับ Windows การใช้Git สำหรับ Windowsจึงเป็นตัวเลือกที่ง่ายที่สุด ตัวติดตั้ง Git สำหรับ Windows บางรุ่น (เช่น 2.7.4) มีช่องทำเครื่องหมายระหว่างการติดตั้งเพื่อเปิดใช้งาน Git Credential Manager นี่คือภาพหน้าจอ:

สกรีนช็อตของวิซาร์ดการติดตั้ง Git For Windows 2.7.4

ยังใช้งาน msysgit อยู่หรือ? สำหรับ msysgit เวอร์ชั่น 1.8.1 ขึ้นไป

wincredผู้ช่วยที่ถูกเพิ่มเข้ามาใน 1.8.1 msysgit ใช้มันดังต่อไปนี้:

git config --global credential.helper wincred

สำหรับ msysgit รุ่นที่เก่ากว่า 1.8.1

ก่อนอื่นดาวน์โหลดgit-credential-winstoreและติดตั้งในไดเรกทอรี git bin ของคุณ

ถัดไปตรวจสอบให้แน่ใจว่าไดเรกทอรีที่มี git.cmd อยู่ในตัวแปรสภาพแวดล้อม Path ของคุณ ไดเรกทอรีเริ่มต้นสำหรับสิ่งนี้คือไฟล์ C: \ Program (x86) \ Git \ cmd บนระบบ 64 บิตหรือ C: \ Program Files \ Git \ cmd บนระบบ 32 บิต gitวิธีง่ายๆในการทดสอบนี้คือการเปิดคำสั่งพร้อมท์และประเภท หากคุณไม่ได้รับรายการคำสั่ง git แสดงว่าการตั้งค่าไม่ถูกต้อง

ขั้นสุดท้ายให้เปิดใช้งานพรอมต์คำสั่งแล้วพิมพ์:

git config --global credential.helper winstore

หรือคุณสามารถแก้ไขไฟล์. gitconfig ของคุณได้ด้วยตนเอง:

[credential]
    helper = winstore

เมื่อคุณทำสิ่งนี้แล้วคุณสามารถจัดการข้อมูลประจำตัวของ git ผ่าน Windows Credential Manager ซึ่งคุณสามารถดึงขึ้นมาได้ผ่านทางแผงควบคุมของ Windows


4
gitcredentialstore.codeplex.comมีคำถามที่พบบ่อย มันช่วยให้ฉันติดตั้ง winstore ได้สำเร็จ ไบนารีขัดข้องเว้นแต่คุณจะเรียกใช้จาก git-bash
ruruskyi

8
FYI ฉันต้องติดตั้งด้วยสิทธิ์ผู้ดูแลระบบอย่างชัดเจน หากไม่มีมันฉันได้รับข้อผิดพลาด "git: 'หนังสือรับรอง winstore' ไม่ใช่คำสั่ง git ดู 'git --help'" . gitconfig ของฉันตอนนี้ดูแตกต่างออกไปเล็กน้อยด้วย [บรรทัดข้อมูลรับรอง] ที่มี "ผู้ช่วย =! 'C: \\ ผู้ใช้ \\ Malachi \\ AppData \\ โรมมิ่ง \\ GitCredStore \\ git-credential-winstore.exe' '
มาลาคี

ของฉันจะโยนข้อยกเว้นที่ไม่สามารถจัดการได้และตาย - ระบบ. Diagnostics กระบวนการเริ่มต้นด้วยเปลือก ExecuteEx (กระบวนการเริ่มต้นเริ่มอินฟอร์อินโฟ)
Andrew

1
มีเหตุผลว่าทำไมพวกเขาจะใช้ซ็อกเก็ต Unix ในแอพพลิเคชั่นแบบหลายแพลตฟอร์ม? และถ้าเป็นเช่นนั้นเหตุใด git-credential-winstore จึงไม่มาพร้อมกับ Git รุ่น Windows โดยค่าเริ่มต้น
Domi

3
เครื่องมือ git-credential-winstore ไม่ทำงานสำหรับฉัน มันเคยเป็นมา แต่ทันใดนั้นฉันก็ได้รับการเตือนจากทั่วทุกที่ ฉันได้ตรวจสอบ. git-config และ Windows Credential Manager และทุกอย่างที่ควรมี มันใช้งานไม่ได้และฉันก็ไม่รู้ว่าทำไม :(
Chris McKenzie


30

วิ่งครั้งแรก git config --global credential.helper wincred

จากนั้นไปที่: CONTROL PANEL\CREDENTIAL MANAGER\WINDOWS CREDENTIAL\GENERIC CREDENTIAL

จากนั้นคลิกที่เพิ่มข้อมูลรับรองในInternet or network address: เพิ่มgit:https://{ชื่อผู้ใช้}.github.com

User: {ชื่อ}

Password: {} รหัสผ่าน


2
Credential Manager อยู่ในบัญชีผู้ใช้และความปลอดภัยของครอบครัวใน Windows 7
Casey Murray

1
ขอบคุณ! ฉันใช้เวลาหนึ่งชั่วโมงในการหาวิธีแก้ไข Windows Credential Manager หลังจากเปลี่ยนรหัสผ่านโดเมนของฉัน โมลิศักดิ์สิทธิ์ศักดิ์สิทธิ์เขาวงกต
SadBunny

3
%windir%\explorer.exe shell:::{1206F5F1-0569-412C-8FEC-3204630DFB70}จากคอนโซลจะเริ่มตัวจัดการข้อมูลประจำตัวเช่นกัน
Jeroen Wiert Pluimers

1
ขอบคุณปัญหาของฉันได้รับการแก้ไข :)
Diallo

21

ฉันประสบปัญหานี้ขณะใช้งาน AptanaStudio3 บน windows7 สิ่งนี้ช่วยฉัน:

git config --global credential.helper wincred

รหัสที่นำมาจากที่นี่


10

ขณะนี้มีวิธีที่ง่ายกว่ามากในการตั้งค่าการแคชรหัสผ่าน Git โดยดับเบิลคลิกที่exeขนาดเล็กบน Windows โปรแกรมgit-credential-winstoreดังกล่าวยังคงอิงตามคำตอบที่ได้รับการโหวตสูงสุดแม้ว่าโครงการจะถูกย้ายจาก GitHub ไปที่http://gitcredentialstore.codeplex.com/

คุณสามารถดาวน์โหลด exe (และไบนารีสำหรับ Mac) ได้จากบล็อกโพสต์นี้: https://github.com/blog/1104-credential-caching-for-wrist-friendly-git-usage


นี่คือคำตอบที่ฉันต้องการ Microsoft ได้เริ่มต้นดูแลโครงการนี้ มันเก็บรหัสผ่านในที่จัดเก็บข้อมูลรับรองของ windows
Gordolio

10

ข้อผิดพลาดที่คล้ายกันคือ 'credential-wincred' is not a git command

คำตอบที่ได้รับการยอมรับและเป็นที่นิยมนั้นล้าสมัยแล้ว ...

wincredสำหรับโครงการ Git-ข้อมูลประจำตัว-วินซึ่งจะไม่ได้รับการบำรุงรักษา

มันถูกแทนที่ด้วยGit-Credential-Manager สำหรับ Windows ที่ดูแลโดยไมโครซอฟท์โอเพนซอร์ส

ดาวน์โหลดรีลีสเป็นไฟล์ zip จากลิงก์ด้านบนและแยกเนื้อหาไปที่

\cygwin\usr\libexec\git-core

(หรือ\cygwin64\usr\libexec\git-coreอาจเป็น)

จากนั้นเปิดใช้งาน (โดยการตั้งค่าโกลบอล.gitconfig) - ดำเนินการ:

git config --global credential.helper manager

วิธีใช้

ไม่ต้องการการกำหนดค่าเพิ่มเติม

มันทำงานได้โดยอัตโนมัติเมื่อต้องการข้อมูลประจำตัว

ตัวอย่างเช่นเมื่อกดไปที่ Azure DevOps หน้าต่างจะเปิดขึ้นและเริ่มต้นการไหลของ oauth2 เพื่อรับโทเค็นของคุณ

Ref:


8

ขั้นแรกให้ค้นหารุ่นที่คุณใช้สำหรับ GIT

ใช้คำสั่งนี้: git --version

หากคุณมีเวอร์ชั่นใหม่กว่า 1.7.10

จากนั้นใช้คำสั่งนี้

git config --global credential.helper wincred

การอ้างอิง


6

เพื่อประโยชน์ของผู้อื่นที่มากับปัญหานี้ฉันมีปัญหาเดียวกันนี้ใน Ubuntu (กล่าวคือรหัสผ่านของฉันไม่ได้แคชแม้จะมีการตั้งค่าตัวเลือกอย่างถูกต้องและได้รับข้อผิดพลาดgit: 'credential-cache' is not a git command.) จนกระทั่งฉันพบว่าคุณลักษณะนี้เป็นเพียง พร้อมใช้งานใน Git 1.7.9 ขึ้นไป

กำลังเผยแพร่ Ubuntu รุ่นเก่า (Natty ฉันเป็นผู้ใช้ที่ดื้อรั้น Gnome 2) รุ่นใน repo เป็น git รุ่น 1.7.4.1 ฉันใช้ PPA ต่อไปนี้เพื่ออัปเกรด: https://launchpad.net/~git-core/+archive/ppa


1
ฉันยังคงได้รับgit: 'credential-cache' is not a git command.แม้หลังจากอัปเกรดเป็นเวอร์ชัน 2.8.2 บน Windows แม้ว่าแคชข้อมูลรับรองจะใช้งานได้! ฉันอาจสร้างปัญหานี้โดยใช้git configคำสั่งบางอย่างมาก่อน
Buttle Butkus

1
@ButtleButkus git config ปรับเปลี่ยนอย่างใดอย่างหนึ่ง~/.gitconfigหรือ repo-local .git/configขึ้นอยู่กับว่ามีการใช้--globalธง ดูทั้งสองไฟล์สำหรับสิ่งที่เกี่ยวข้องกับข้อมูลรับรอง
โยฮันน์

5

เพื่อประโยชน์ของผู้อื่นที่มีปัญหานี้ - ฉันลงจอดที่นี่เพราะฉันพยายามทำให้น่ารักด้วยวิธีที่ฉันตั้งค่าที่เก็บ github ใหม่ แต่ตัวช่วยข้อมูลประจำตัวของหน้าการตั้งค่าไม่ทำงานจนกว่าคุณจะโคลนที่เก็บข้อมูล

"เคล็ดลับ: ผู้ช่วยหนังสือรับรองทำงานเฉพาะเมื่อคุณโคลน URL ที่เก็บ HTTPS หากคุณใช้ URL ที่เก็บ SSH แทนจะใช้คีย์ SSH สำหรับการตรวจสอบความถูกต้องคู่มือนี้ให้ความช่วยเหลือในการสร้างและใช้คู่คีย์ SSH"


4

ฉันแก้ไขปัญหานี้โดยการลบcredentialส่วนออกจากการกำหนดค่าของโครงการเฉพาะ:

  • เพิ่งพิมพ์: git config -e
  • [credential] helper = cacheภายในบรรณาธิการฉันออกส่วนทั้ง

สิ่งนี้ลบข้อความที่น่ารำคาญ:

git: 'credential-cache' is not a git command. See 'git --help'.


1
ฉันลองวิธีแก้ปัญหามากมายจากด้านบนและนี่เป็นวิธีเดียวที่ใช้ได้ผล ฉันเพิ่งไปที่โฟลเดอร์. git ของฉันเปิดไฟล์ config และลบ [หนังสือรับรอง] helper = global (ฉันตั้งเป็น "ทั่วโลก" โดยไม่ตั้งใจ) ขอบคุณ Pini Cheyni มาก ๆ
Filip Savic

1
ฉันดีใจที่ฉันสามารถช่วยได้
Pini Cheyni

3

ฉันรู้ว่าฉันมาสายนิดหน่อย แต่ฉันก็เจอปัญหาเดียวกันในการตั้งค่า git ของฉันฉันมีหนังสือรับรองสองรายการ ...

ในไฟล์. gitconfig ของฉัน

[credential]
helper = cached
[credentials]
helper = wincred

การแก้ไข: เปลี่ยนไฟล์. gitconfig ของฉันเป็นการตั้งค่าด้านล่าง

[credential]
helper = wincred
[credentials]
helper = wincred

0

เรามีปัญหาเดียวกันกับที่เก็บ Azure DevOps หลังจากเปลี่ยนโดเมนของเราคือจาก @ xy.com เป็น @ xyz.com ในการแก้ไขปัญหานี้เราได้สร้างโทเค็นการเข้าถึงส่วนบุคคลใหม่พร้อมสิทธิ์ต่อไปนี้:

รหัส: อ่านและเขียนบรรจุภัณฑ์: อ่าน

จากนั้นเราเปิดตัวจัดการข้อมูลรับรองของ Windows เพิ่มข้อมูลประจำตัวของ windows ทั่วไปใหม่ด้วยรายละเอียดต่อไปนี้:

ที่อยู่อินเทอร์เน็ตหรือเครือข่าย: "git: { projectname } @ dev.azure.com / { projectname }" - หรือคุณควรใช้ชื่อที่เก็บ git ของคุณที่นี่
ชื่อผู้ใช้:
รหัสผ่าน "การเข้าถึงส่วนตัวโทเค็น" { โทเค็นการเข้าถึงส่วนบุคคลที่สร้างขึ้น }

หลังจากนั้นการดำเนินการคอมไพล์ของเราก็ทำงานได้อีกครั้ง หวังว่านี่จะช่วยคนอื่นได้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.