ผู้ช่วยหนังสือรับรอง Git - อัปเดตรหัสผ่าน


198

ขณะนี้ฉันใช้ GitHub ผ่าน HTTPS และติดตั้ง Git รุ่นล่าสุด (1.9.0) พร้อมกับผู้ช่วยข้อมูลประจำตัวของ Git บน Windows 7

ในการตั้งค่าสภาพแวดล้อมของฉันฉันบอก git-credentials เพื่อจดจำชื่อผู้ใช้และรหัสผ่านของฉันอย่างถาวร

ฉันเพิ่งอัปเดตรหัสผ่าน GitHub ของฉันผ่านเว็บไซต์และตอนนี้ฉันไม่สามารถกด / ดึง / ดึง ฯลฯ

ฉันจะไปเกี่ยวกับการอัพเดตรหัสผ่านตัวช่วยเหลือ git-credentials บน Windows 7 ได้อย่างไร


6
ง่ายใช้ "git config - global credential.helper wincred" แล้วป้อนชื่อผู้ใช้และรหัสผ่าน; จากนั้นสิ่งนี้จะถูกเก็บไว้สำหรับคุณในครั้งต่อไปที่คุณเปลี่ยนรหัสผ่านให้รันคำสั่งด้านบนอีกครั้ง
Akshay Lokur

@AkshayLokur นี่เป็นคำตอบที่ถูกต้อง
Ravimallya

หากทุกอย่างล้มเหลวและคุณใช้ TortoiseGit คุณอาจต้องการลองดำเนินการผ่านทางนั้น ตัวอย่างเช่นการดึงหรือดึงข้อมูลโดยใช้ Tortoise จะถามรหัสผ่านซึ่งคุณสามารถอัปเดตได้ ดูเหมือนว่าจะเขียนทับแคช Git Bash และคุณสามารถใช้ bash ได้อีกครั้ง
พอลเอฟ. วูด

คำตอบ:


282

ไม่มีคำตอบใดที่จบลงด้วยการทำงานกับปัญหาข้อมูลรับรอง Git ของฉัน นี่คือสิ่งที่ใช้ได้ผลถ้าใครต้องการ (ฉันใช้ Git 1.9 บน Windows 8.1)

การอัปเดตข้อมูลประจำตัวของคุณไปที่แผงควบคุมตัวจัดการข้อมูลประจำ → ข้อมูลทั่วไป ค้นหาข้อมูลรับรองที่เกี่ยวข้องกับบัญชี Git ของคุณและแก้ไขเพื่อใช้รหัสผ่านที่อัปเดต

การอ้างอิง: วิธีอัปเดตข้อมูลรับรอง Git ของคุณบน Windows

โปรดทราบว่าในการใช้ Windows Credential Manager สำหรับ Git คุณจะต้องกำหนดค่าตัวช่วยข้อมูลรับรองดังนี้:

git config --global credential.helper wincred

หากคุณมีบัญชี GitHub หลายบัญชีที่คุณใช้สำหรับที่เก็บอื่นคุณควรกำหนดค่าข้อมูลรับรองเพื่อใช้เส้นทางที่เก็บข้อมูลแบบเต็ม (แทนที่จะเป็นเพียงโดเมนซึ่งเป็นค่าเริ่มต้น):

git config --global credential.useHttpPath true

21
นี้ควรจะเป็นคำตอบที่ได้รับการยอมรับถ้ามีgit config --list credential.helper=wincred
MF

6
ทำงานให้ฉัน - ขอบคุณ - และเรียนรู้เกี่ยวกับตัวจัดการข้อมูลรับรองของ Windows ด้วย
rwalter

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

2
ฉันคิดว่ามันใช้งานได้กับ window 8.1 และ window 10 ด้วย ในกรณีของฉัน: window 10 Pro, คอมไพล์ 2.17
Thinhbk

2
สำหรับทุกคนที่ (เช่นฉัน) จะลบข้อมูลรับรองที่เก็บไว้ซึ่งหวังว่าจะได้รับพรอมต์อีกครั้ง แต่ข้อความแจ้งนั้นจะไม่ปรากฏขึ้น จากตัวจัดการข้อมูลประจำตัวที่คุณสามารถที่มีอยู่ของ Http หรือ Https เหมือนกันบิตที่สำคัญคือตอนเริ่มต้น ADDGeneric Credentialgit:http://yourserver:port/git:
A. Chiesa

101

ในความพยายามครั้งแรกของฉันในการดึงข้อมูล Git หลังจากเปลี่ยนรหัสผ่านฉันได้รับแจ้งว่าการรวมชื่อผู้ใช้ / รหัสผ่านไม่ถูกต้อง สิ่งนี้ถูกต้องเนื่องจากผู้ช่วยหนังสือรับรองได้แคชค่าเก่าของฉันแล้ว

อย่างไรก็ตามฉันพยายามเรียก gitอีกครั้งหลังจากรีสตาร์ท terminal / command-prompt และในครั้งนี้ผู้ช่วยข้อมูลประจำตัวแจ้งเตือนให้ฉันป้อนชื่อผู้ใช้และรหัสผ่าน GitHub ของฉัน

ฉันสงสัยว่าคำขอเรียก Git ที่เริ่มต้นล้มเหลวร่วมกับการรีสตาร์ท Terminal / command-prompt แก้ไขปัญหานี้ให้ฉัน

ฉันหวังว่าคำตอบนี้จะช่วยให้คนอื่นในตำแหน่งที่คล้ายกันในอนาคต!


2
เพียงรีสตาร์ท Git Bash มันจะแสดงกล่องโต้ตอบเพื่อป้อนชื่อผู้ใช้ / รหัสผ่านใหม่
Quan

2
สำหรับบันทึกฉันสามารถแก้ไขปัญหานี้ได้ด้วยการดึง / ดึงข้อมูลอีกครั้งโดยไม่ต้องรีสตาร์ทเซสชัน Powershell ของฉันใน Windows 7 Windows แจ้งเตือนให้ฉันรับเครดิตใหม่ในความพยายามครั้งที่สอง
Bender the Greatest

การรีสตาร์ทคอนโซล / แอปทำให้ "wincred" ใช้งานได้สำหรับฉัน (ฉันต้องรีสตาร์ทคอนโซลและ "Atom" และทุกอย่างทำงานได้ดี)
low_rents

3
ป้อนคำสั่งใด ๆ คอมไพล์ที่ต้องใช้ข้อมูลประจำตัวเป็นครั้งที่สองดูเหมือนว่าจะทำเช่นนี้ไม่เพียง แต่มันยังทำงานในครั้งที่สองgit fetch git clone
navigator_

ขอบคุณมาก! ทุกครั้งที่ฉันเปลี่ยนรหัสผ่านโดเมนของฉันฉันต้องจำไว้ว่าจะต้องอัปเดตข้อมูลรับรองของฉันได้อย่างไรดึงข้อมูล - มันใช้งานได้สำหรับฉัน!
Alexander Brattsev

74

โซลูชันที่ใช้บรรทัดคำสั่งสำหรับ Windows, Linux และ MacOS

หากคุณอัปเดตรหัสผ่าน GitHub ของคุณบนเซิร์ฟเวอร์ GitHub ในความพยายามครั้งแรกของgit fetch/pull/pushคำสั่งจะสร้างข้อความรับรองความถูกต้องล้มเหลว

ดำเนินการgit fetch/pull/pushคำสั่งเดียวกันเป็นครั้งที่สองและพร้อมท์ให้ใส่ข้อมูลประจำตัว (ชื่อผู้ใช้และรหัสผ่าน) ป้อนชื่อผู้ใช้และรหัสผ่านที่อัปเดตใหม่ของเซิร์ฟเวอร์ GitHub และการเข้าสู่ระบบจะสำเร็จ

แม้ฉันมีปัญหานี้และฉันก็ทำตามขั้นตอนข้างต้นแล้วก็ทำ !!


@ Vincent: ปัญหาที่คุณได้รับคืออะไร ??
Farooque

2
ฉันเพิ่งได้รับระยะไกลซ้ำ: ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง ร้ายแรง: การตรวจสอบสิทธิ์ล้มเหลวสำหรับ
RichMeister

1
@RichMeister: จากครั้งที่สองมันจะขอชื่อผู้ใช้ / รหัสผ่าน เพียงระบุชื่อผู้ใช้ / new_password ของคุณ
Farooque

3
ทำงานกับฉันใน MacOS ด้วยข้อมูลประจำตัวที่ถูกแคชหลังจากเปลี่ยนรหัสผ่าน ครั้งแรกที่ได้รับ 'การตรวจสอบสิทธิ์ล้มเหลวสำหรับ ... ' พยายามอีกครั้งและได้รับพร้อมท์สำหรับข้อมูลประจำตัวป้อนรหัสผู้ใช้และรหัสผ่านใหม่และตอนนี้ทำงานอีกครั้ง
Kevin Hooke

1
นี่เป็นคำตอบที่ดีที่สุด / ง่ายที่สุด
Ryan Boken

74

หากคุณเป็นผู้ใช้ Windows คุณสามารถลบหรืออัปเดตข้อมูลประจำตัวของคุณใน Credential Manager

ใน Windows 10 ไปที่เส้นทางด้านล่าง:

แผงควบคุมรายการแผงควบคุมทั้งหมดตัวจัดการข้อมูลรับรอง

หรือค้นหา "ผู้จัดการข้อมูลรับรอง" ในส่วน "ค้นหา Windows" ของคุณในเมนูเริ่ม

จากนั้นจากตัวจัดการข้อมูลประจำตัวเลือก "ข้อมูลรับรองของ Windows"

ผู้จัดการข้อมูลประจำตัวจะแสดงรายการมากมายรวมถึง outlook และที่เก็บ GitHub ของคุณภายใต้

คุณคลิกที่ลูกศรลงที่ด้านขวาของ Git ของคุณและมันจะแสดงตัวเลือกในการแก้ไขและลบ หากคุณลบป๊อปอัพหนังสือรับรองจะมาในครั้งต่อไปเมื่อคุณดึงหรือดึง หรือคุณสามารถแก้ไขข้อมูลรับรองได้โดยตรง


3
หลังจากลองใช้ตัวเลือกอื่นแล้วตัวเลือกนี้ใช้ได้สำหรับฉันเท่านั้น ฉันพบข้อมูลที่นี่: cmatskas.com/how-to-update-your-git-credentials-on-windows
neomib

หมายเหตุ: ตัวควบคุมนี้ไม่สามารถใช้งานได้ผ่าน UI ของ METRO "แผงควบคุม"! คุณต้องเรียกใช้control.exeด้วยตนเองเพื่อดูตัวควบคุมนี้
AnrDaemon

สิ่งนี้ช่วยได้มาก! ฉันไม่รู้ด้วยซ้ำว่าเครื่องมือนี้มีอยู่จริง
ขากรรไกร

36

git --versionครั้งแรกที่พบว่ารุ่นที่คุณกำลังใช้มีคำสั่ง Git หากคุณมีเวอร์ชันใหม่กว่า 1.7.10 ให้ใช้คำสั่งนี้:

git config --global credential.helper wincred

จากนั้นทำgit fetchแล้วจะแจ้งให้มีการอัพเดตรหัสผ่าน

ตอนนี้มันจะไม่ถามรหัสผ่านหลายครั้งใน Git


7
สิ่งนี้ไม่ตอบคำถาม
disklosr

2
@disklosr ใช่แล้ว มันจะบังคับให้ Git แจ้งรหัสผ่านที่อัปเดตในครั้งต่อไปที่คุณทำการกระทำระยะไกล
Nilpo

1
@Nilpo "การกระทำระยะไกล" คืออะไร? ไม่ควร "git push origin xxx" เป็นแอคชั่นระยะไกลใช่หรือไม่ มันไม่ได้ทำ ฉันจะได้รับรีโมตแทน: ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง
RichMeister

1
มันใช้งานได้สำหรับฉัน หลังจากรันคำสั่งนี้ ทำ "เรียก git" คุณจะได้รับแจ้งข้อมูลประจำตัวให้มัน
อเล็กซ์

ทำไม--global? ฉันไม่เสี่ยงที่จะถูกถามถึงที่เก็บข้อมูลทั้งหมดของฉันแทนที่จะเป็นที่เก็บข้อมูลที่กระทบ
Thomas Weller

29

สำหรับฉันดูเหมือนว่าคำตอบที่นี่ล้าสมัย สำหรับฉันภายใต้ Windows 10 และ Git 2.15.0 สิ่งนี้ทำได้:

git credential reject
protocol=https
host=github.com
<Empty line here>

จากนั้นตั้งค่าชื่อผู้ใช้และรหัสผ่านใหม่:

git credential fill
protocol=https
host=github.com
<empty line here>

หลังจากนี้หากข้อมูลประจำตัวทำงานบนโฮสต์เป้าหมายที่ต้องการเราควรใช้git credential approve- กล่าวถึงในการใช้งานทั่วไปของข้อมูลประจำตัว Git (ขั้นตอนที่ 4) - เพื่อบอกผู้ช่วยข้อมูลประจำตัวเพื่อทำเครื่องหมายรับรองว่าได้รับการอนุมัติและนำมาใช้ใหม่ในการเชื่อมต่อในอนาคต


1
สำหรับฉันแล้วการทำgit credential fillส่วนที่เป็นอยู่มันจะสร้างรหัสผ่านผิดเก่าโดยอัตโนมัติ ฉันต้องตั้งค่าใหม่ด้วยตนเองด้วยคำสั่งนี้เพื่อให้ทำงาน; อย่างไรก็ตามขอบคุณคำตอบนี้ช่วยฉันด้วยปัญหานี้!
Emerson Cardoso

โหวตขึ้นไปด้านบน! เสียเวลามากแค่ไหนในการอ่านโซลูชันที่ล้าสมัย จริงๆแล้ว Git Credential Manager จะโทษที่นี่ฉันคิดว่าต้องผ่านความเจ็บปวดเมื่อรหัสผ่านโดเมนหมุน
Janis Veinbergs

1
หลังจากfillนั้นเราไม่ควรใช้approve?
Z. Khullah

ในเครื่องของฉันgit credential rejectไม่เคยเสร็จสมบูรณ์
Thomas Weller

@ThomasWeller คุณต้องกด Enter เพื่อปล่อยให้บรรทัดว่างอยู่ที่นั่นจากนั้นจะเสร็จสมบูรณ์
atavio

19

FWIW ฉันพบปัญหาเดียวกันนี้มาก (และเจ้านายของฉันด้วยดังนั้นมันจึงรุนแรงขึ้น)

วิธีแก้ไขทันทีคือการลบหรือแก้ไขรายการ Git ของคุณใน Windows Credential Manager คุณอาจพบว่ายากในรุ่น Windows ที่แปลเป็นภาษาท้องถิ่นของคุณ แต่โชคดีที่คุณสามารถเริ่มต้นได้จากกล่องโต้ตอบWindows+ Rรันแบบเก่าที่ดีด้วยcontrol keymgr.dllหรือcontrol /name Microsoft.CredentialManager(หรือrundll32.exe keymgr.dll, KRShowKeyMgrถ้าคุณชอบรูปลักษณ์แบบคลาสสิก) cmdkey /delete:git:http://your.git.server.company.comหรือใส่ในแฟ้มชุดสำหรับเพื่อนร่วมงานของคุณ:

ใน Git Credential Manager ของ Microsoft นี่เป็นปัญหาที่ทราบกันดีซึ่งอาจได้รับการแก้ไขโดยเร็วในช่วงต้นปี 2562 (ดังนั้นอย่ากลั้นหายใจ)


1
การทำความเข้าใจ Windows Credential Manager โดยใช้ UI ของแผงควบคุมนั้นยอดเยี่ยม แต่น่าเบื่อเมื่อคุณต้องอัปเดตทุกเครื่อง คำสั่งเดียวนี้ยอดเยี่ยมเนื่องจากมันทำสิ่งเดียวกันได้สำเร็จ (ลบข้อมูลประจำตัวที่ไม่ถูกต้องที่มีอยู่) ซึ่งบังคับให้ git แสดงพร้อมท์สำหรับข้อมูลรับรองอีกครั้งในครั้งต่อไปที่ต้องการ บน Windows Server 2016 ไวยากรณ์คำสั่งเพื่อลบข้อมูลรับรองแตกต่างกันเล็กน้อย: cmdkey /delete:git:https://your.git.server.company.com
Rud ทาน

/delete{:<TargetName>}เป็นไวยากรณ์อย่างเป็นทางการแต่ฉันพบว่าทางลัด/del <TargetName>ทำงานได้อย่างน้อยใน Windows 10 (1803)
จา

ความคิดที่ดีสำหรับนามแฝง! delpw = !cmdkey /delete:git:$(git remote get-url $1). การใช้งาน: git delpw origin(ps: / del ไม่ทำงานที่นี่ชนะ 10 ด้วย)
Z. Khullah

6

เพียงcdในไดเรกทอรีที่คุณติดตั้ง git-credential-winstore หากคุณไม่ทราบว่าอยู่ที่ไหนเพียงรันโปรแกรมนี้ใน Git Bash:

cat ~/.gitconfig

ควรพิมพ์สิ่งที่มีลักษณะดังนี้:

[credential]
    helper = !'C:\\ProgramFile\\GitCredStore\\git-credential-winstore.exe'

ในกรณีนี้ที่เก็บของคุณคือ C: \ ProgramFile \ GitCredStore เมื่อคุณอยู่ในโฟลเดอร์นี้โดยใช้ Git Bash หรือคำสั่ง Windows ให้พิมพ์:

git-credential-winstore.exe erase
host=github.com
protocol=https

อย่าลืมกดEnterสองครั้งหลังจากprotocol=httpsนั้น


3

ไม่มีวิธีแก้ปัญหาใดที่ใช้งานได้ในปัจจุบันสำหรับฉันด้วย git bash 2.26.2 สิ่งนี้จะใช้ได้ในทุกกรณีหากคุณใช้โปรแกรมจัดการข้อมูลรับรองของ windows

ปัญหาหนึ่งคือตัวจัดการข้อมูลรับรอง windows ทำงานสำหรับผู้ใช้ที่เข้าสู่ระบบ ในกรณีของฉันฉันใช้ git ทุบตีด้วยคลิกขวาเรียกใช้ในฐานะผู้ดูแล ดังนั้นข้อมูลประจำตัวที่เก็บไว้ของฉันอยู่ในตัวจัดการข้อมูลประจำตัวที่ฉันไม่สามารถเข้าถึงด้วย windows GUI ได้หากฉันไม่ได้ลงชื่อเข้าใช้ windows ในฐานะผู้ดูแลระบบ

ในการแก้ไขปัญหานี้:

  • เปิด cmd ในฐานะผู้ดูแลระบบ (หรือผู้ใช้ที่คุณรันด้วยการทุบตีด้วย)
  • ไปที่ windows / system32
  • ประเภทcmdkey /list. ข้อมูลประจำตัวเก่าของคุณควรปรากฏที่นี่พร้อมส่วนที่อ่าน ... เป้าหมาย: xxx ...
  • พิมพ์cmdkey /delete:xxxโดยที่ xxx คือเป้าหมายจากบรรทัดก่อนหน้า

ควรยืนยันว่าข้อมูลประจำตัวของคุณถูกลบแล้ว ครั้งต่อไปที่คุณทำการดำเนินการใด ๆ ใน bash git ที่ต้องการการรับรองความถูกต้องป๊อปอัพจะขอข้อมูลประจำตัวของคุณ

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