ลบข้อมูลรับรองออกจาก Git


623

ฉันทำงานกับที่เก็บข้อมูลหลายแห่ง แต่เมื่อเร็ว ๆ นี้ฉันเพิ่งทำงานในที่ทำงานภายในของเราและทุกอย่างยอดเยี่ยม

วันนี้ฉันต้องยอมรับและใส่รหัสลงในรหัสอื่น แต่ฉันมีปัญหา

$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://gavekortet@appharbor.com/mitivo.git/info/refs?service=git-receive-pack
fatal: HTTP request failed

ไม่มีอะไรที่ฉันสามารถทำได้ซึ่งจะนำรหัสผ่านมาอีกครั้ง

ฉันจะรีเซ็ตข้อมูลประจำตัวในระบบของฉันเพื่อให้ Git จะขอรหัสผ่านของที่เก็บข้อมูลนั้นได้อย่างไร

ฉันเหนื่อย:

  • git config --global --unset core.askpass

เพื่อยกเลิกการตั้งรหัสผ่าน

  • git config credential.helper 'cache --timeout=1'

เพื่อหลีกเลี่ยงแคชหนังสือรับรอง ...

ดูเหมือนจะไม่มีอะไรทำงาน; ไม่มีใครมีความคิดที่ดีกว่า


คุณมี~/.netrcไฟล์ไหม
robinst

2
@robinst มันเป็นเครื่อง windows และผมก็ไม่สามารถหาไฟล์ที่ไม่ได้มาจาก Git Bash ...
balexandre

@balexandre สำหรับเครื่อง Windows ฉันชอบใช้ตัวช่วยข้อมูลประจำตัว (git 1.8.3) ตัวnetrcใหม่ซึ่งจะเก็บข้อมูลประจำตัวหลายรายการไว้ในไฟล์ที่เข้ารหัส เป็นการดีกว่าการป้อนรหัสผ่านของคุณในแต่ละครั้งสำหรับแต่ละเซสชันเนื่องจากแคชจะ "แคช" รหัสผ่านในช่วงเวลาหนึ่งเท่านั้น ดูตัวอย่างเต็มได้ที่นี่
VonC

ฉันไม่มี. netrc ฉันมีไฟล์ใน ~ (C: \ Users \ Myself) ชื่อ. git-credentials แต่การลบมันไม่ทำงานฉันยังคงลงชื่อเข้าใช้ Git Shell นอกจากนี้แผงควบคุมหนังสือรับรองผู้จัดการดูเหมือนจะไม่เก็บอะไรเลย ดูเหมือนว่าไฟล์กำหนดค่า Git ในท้องถิ่นและทั่วโลกก็โอเค ฉันสืบทอดเวิร์กสเตชันของฉันจากพนักงานที่เหลืออยู่ดังนั้นอาจเป็นไปได้ว่าเขาตั้งกลไกการแคชข้อมูลรับรองนอกรีตที่ฉันไม่มีเงื่อนงำว่าจะปิดได้อย่างไร ฉันหวังว่าพฤติกรรมนี้ไม่ใช่ค่าเริ่มต้นของ Git Windows บนการแคชข้อมูลประจำตัวของ Mac เป็นค่าเริ่มต้น แต่อย่างน้อยก็แสดงในการเข้าถึง Keychain
damix911

คำตอบแบบเต็มซึ่งใช้กับ linux, windows และ Mac OS X ดูstackoverflow.com/a/39944557/3906760
MrTux

คำตอบ:


654

หากปัญหานี้มากับเครื่อง Windows ให้ทำดังต่อไปนี้

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

ไปที่ตัวจัดการข้อมูลรับรอง

ไปที่ข้อมูลประจำตัวของ Windows และลบรายการภายใต้ข้อมูลรับรองทั่วไป


4
credential.helper=managerนี้มีความเกี่ยวข้องเฉพาะในกรณีของคุณ เพื่อทดสอบประเภทgit config --listนี้ หากตั้งค่าเป็นstoreข้อมูลรับรองจะไม่ถูกจัดเก็บในที่จัดเก็บข้อมูลรับรอง แต่ถูกจัดเก็บไว้โดยไม่มีการเข้ารหัส
เลียม

3
ฉันเพียงแค่ลบชื่อรับรองgit:https://github.comและฉันได้รับแจ้งให้ป้อนชื่อผู้ใช้ของฉัน / ผ่านในครั้งต่อไปที่ฉันโคลน repo โดยใช้ PyCharm ฉันมีบัญชี GitHub มากกว่าหนึ่งบัญชีและบัญชีที่ไม่ถูกต้องนั้นถูกแคช
คอม

22
หากมีใครค้นหานี้บนเครื่องที่มีการแปลเยอรมัน, มันเป็น"Anmeldeinformationsverwaltung"Systemsteuerung\Alle Systemsteuerungselemente\Anmeldeinformationsverwaltungบนเส้นทาง
davidenke

3
หรือคุณสามารถเปลี่ยนผู้ใช้ / Credential Managerผ่านใน ที่ทำงานให้ฉันด้วย
Daniel Lerps

การลบข้อมูลรับรองแก้ไข403ข้อผิดพลาดของฉันผ่าน Bitbucket
Eido95

673

แคชข้อมูลรับรอง Git จะเรียกใช้กระบวนการ daemon ซึ่งแคชข้อมูลรับรองของคุณในหน่วยความจำและส่งมอบตามความต้องการ ดังนั้นการฆ่า git-credential-cache ของคุณ - กระบวนการ daemon จะทิ้งสิ่งเหล่านี้ทั้งหมดและส่งผลให้คุณใส่รหัสผ่านของคุณอีกครั้งหากคุณยังคงใช้สิ่งนี้เป็นตัวเลือก cache.helper

คุณสามารถปิดการใช้งานแคชหนังสือรับรอง Git git config --global --unset credential.helperได้ จากนั้นรีเซ็ตสิ่งนี้และคุณจะยังคงมีข้อมูลประจำตัวที่แคชไว้สำหรับที่เก็บอื่น ๆ (ถ้ามี) คุณอาจต้องทำเช่นgit config --system --unset credential.helperนี้หากตั้งค่าไว้ในไฟล์กำหนดค่าระบบ (เช่น Git สำหรับ Windows 2)

ใน Windows คุณอาจจะดีกว่าถ้าใช้ตัวช่วยจัดการ ( git config --global credential.helper manager) สิ่งนี้จะจัดเก็บข้อมูลรับรองของคุณในที่จัดเก็บข้อมูลรับรอง Windows ซึ่งมีอินเทอร์เฟซแผงควบคุมซึ่งคุณสามารถลบหรือแก้ไขข้อมูลประจำตัวที่เก็บไว้ได้ ด้วยร้านค้านี้รายละเอียดของคุณจะปลอดภัยจากการลงชื่อเข้าใช้ Windows และสามารถคงอยู่ได้หลายครั้ง ผู้จัดการผู้ช่วยรวมอยู่ใน Git สำหรับ Windows 2.x ได้เข้ามาแทนที่ก่อนหน้านี้wincredผู้ช่วยที่ถูกเพิ่มเข้ามาใน Git สำหรับ Windows 1.8.1.1 ผู้ช่วยที่คล้ายกันที่เรียกว่าwinstoreมีให้บริการออนไลน์และใช้กับ GitExtensions เนื่องจากมีส่วนต่อประสาน GUI ขับเคลื่อนมากกว่า ผู้จัดการผู้ช่วยที่มีอินเตอร์เฟซ GUI เช่นเดียวกับวิน

แยกจากหน้าสนับสนุน Windows 10ซึ่งมีรายละเอียดตัวจัดการข้อมูลรับรองของ Windows:

ในการเปิดตัวจัดการข้อมูลประจำพิมพ์ "ผู้จัดการข้อมูลประจำตัว" ในช่องค้นหาบนแถบงานและเลือกแผง Credential จัดการควบคุม

จากนั้นเลือกWindows Credentialsเพื่อแก้ไข (= ลบหรือแก้ไข) ข้อมูลประจำตัว git ที่เก็บไว้สำหรับ URL ที่กำหนด


197
ฉันพบแผงควบคุมข้อมูลรับรองของ Windows ที่Control Panel\User Accounts\Credential Managerอยู่ภายใต้ Windows 7
Steve Pitchers

2
การไม่ฆ่ากระบวนการทิ้งร่องรอยไว้ที่ใดที่หนึ่งเพื่อให้สามารถเข้าถึงรหัสผ่านได้ ตามคู่มือ git พวกเขาจะถูกเก็บไว้ใน "ข้อความธรรมดา"
Ufos

1
ใน windows 8.1 "Windows Credentials" อยู่ภายใต้ Generic Credentials และ git: gitlab.comหรือเซิร์ฟเวอร์ git ที่คุณเลือก
Jeff

5
ใน Windows 8/10 การตั้งค่าบัญชีผู้ใช้โดยละเอียดอยู่ภายใต้แผงควบคุม "คลาสสิค" ไม่ใช่แอพ "การตั้งค่า" (UI ที่ทันสมัย) เพียงเพื่อหลีกเลี่ยงความสับสน
DanielH

1
ใน windows 10 ไปที่แผงควบคุม \ รายการทั้งหมดของแผงควบคุม \ ผู้จัดการข้อมูลประจำตัว อาจมีข้อมูลรับรองทั่วไปสำหรับ GitHub คุณสามารถอัปเดตชื่อผู้ใช้และรหัสผ่านที่นั่นได้
Eldhose Abraham

155

พิมพ์:

$ git config credential.helper store

จากนั้นคุณจะถูกขอให้ป้อนข้อมูลประจำตัวของคุณอีกครั้ง

คำเตือน

การใช้ตัวช่วยนี้จะเก็บรหัสผ่านของคุณโดยไม่เข้ารหัสบนดิสก์

ที่มา: https://git-scm.com/docs/git-credential-store


35
คำสั่งนี้ไม่ขอให้ป้อนข้อมูลประจำตัวของฉันอีกครั้งคำสั่งนี้ไม่ได้ทำอะไรเลย
Shirish Herwade

3
@ShirishHerwade ลอง git pull แล้วคุณจะเห็นหน้าจอพรอมต์
ismailcem

2
@jkokorian .git/configต้องการยกเลิกคำสั่งนี้ลบเส้นที่เกี่ยวข้องจาก
Zenadix

110

ฉันประสบปัญหาเดียวกันกับ OP กำลังใช้ข้อมูลประจำตัว Git เก่าของฉันที่เก็บไว้ที่ไหนสักแห่งในระบบและฉันต้องการใช้ Git กับข้อมูลประจำตัวใหม่ของฉันดังนั้นฉันจึงรันคำสั่ง

$ git config --system --list

มันแสดงให้เห็น

credential.helper=manager

เมื่อใดก็ตามที่ฉันทำgit pushมันใช้ชื่อผู้ใช้เก่าของฉันซึ่งฉันตั้งนานและฉันต้องการที่จะใช้บัญชี GitHub ใหม่เพื่อผลักดันการเปลี่ยนแปลง ผมมารู้ทีหลังพบว่าข้อมูลบัญชี GitHub เก่าของฉันถูกเก็บอยู่ภายใต้ การควบคุมแผงบัญชีผู้ใช้ตัวจัดการข้อมูลประจำ → จัดการข้อมูลประจำตัวของ Windows

จัดการข้อมูลประจำตัวของ Windows

ฉันเพิ่งลบข้อมูลรับรองเหล่านี้และเมื่อฉันดำเนินการgit pushมันจะขอข้อมูลรับรอง GitHub ของฉันและมันใช้งานได้อย่างมีเสน่ห์


ภาพประกอบที่ดีของตัวจัดการข้อมูลประจำตัว Git ล่าสุด ( github.com/Microsoft/Git-Credential-Manager-for-Windows ) ซึ่งทำงานโดยการจัดเก็บข้อมูลรับรอง ( github.com/Microsoft/Git-Credential-Manager-for-Windows/) ปัญหา / … ) +1
VonC

1
@VonC ฉันใช้เวลาหนึ่งวันในการค้นหาสิ่งนี้เนื่องจากฉันไม่ได้ตระหนักถึงกลไกการจัดเก็บข้อมูลรับรองนี้
Mourya

มันค่อนข้างล่าสุดแน่นอน ขอบคุณที่พูดถึงที่นี่
VonC

นี่อาจเป็นคำตอบที่ดีกว่าคำตอบ "ยอมรับ" ซึ่งสำหรับฉันแล้วแสดงให้เห็นว่าการได้รับหนังสือรับรองทั้งหมด ช่วยฉันอย่างแน่นอน
VictorLegros

52

ลองใช้คำสั่งด้านล่าง

git credential-manager

ที่นี่คุณสามารถรับตัวเลือกต่าง ๆ เพื่อจัดการข้อมูลประจำตัวของคุณ (ตรวจสอบหน้าจอด้านล่าง)

ป้อนคำอธิบายภาพที่นี่

หรือคุณสามารถลองคำสั่งนี้ได้โดยตรง:

git credential-manager uninstall

การดำเนินการนี้จะเริ่มพร้อมท์รหัสผ่านอีกครั้งในแต่ละคำขอการโต้ตอบของเซิร์ฟเวอร์


10
ทำไมฉันถึงได้รับ -git: 'credential-manager' is not a git command. See 'git --help'.
Saikat

2
ไม่แน่ใจว่าทำไมมันไม่ทำงานสำหรับคุณ แต่ถึงแม้จะเป็นเวอร์ชั่นคอมไพล์รุ่นล่าสุดก็ยังมีให้บริการ โปรดอ้างอิงลิงค์นี้สำหรับข้อมูลเพิ่มเติม - git-scm.com/book/gr/v2/Git-Tools-Credential-Storage
Himanshu Aggarwal

3
เตรียมพร้อมremoval failed. U_U Press any key to continue... fatal: InvalidOperationException encountered. Cannot read keys when either application does not have a console or when console input has been redirected from a file. Try Console.Read.(พร้อมU_Uอีโมจิที่ดีไม่มีที่ไหนเลย :))
jeromej

1
ทางออกเดียวที่ทำงานกับฉันบน Windows ด้วย GitBash
alain.janinm

อาจจะกัน แต่ฉันติดตั้งคอมไพล์ผ่าน choco และวิธี [ถอนการติดตั้ง] นี้เป็นสิ่งที่ดีสำหรับฉันในการดึง repo บนคอมพิวเตอร์ที่ใช้งานโดยไม่ต้องเก็บข้อมูลรับรอง
beep_check

32

ฉันพบบางสิ่งที่เหมาะกับฉัน เมื่อฉันเขียนความคิดเห็นของฉันไปที่ OP ฉันไม่สามารถตรวจสอบไฟล์กำหนดค่าระบบ:

git config --system -l

แสดงให้เห็นว่า

credential.helper=!github --credentials

ไลน์. ฉันล้างมันด้วย

git config --system --unset credential.helper

และตอนนี้ข้อมูลประจำตัวจะถูกลืม


2
อีกครั้ง, คุณอาจจำเป็นต้องเรียกใช้คำสั่งที่แนะนำในลักษณะที่คล้ายกันจาก 2-3 ครั้งหากคุณได้รับการกำหนดค่าผู้ช่วยข้อมูลประจำตัวสองสาม git config --global --unset credential.helperและอาจเป็นเพียงแค่git config --unset credential.helperในพื้นที่เก็บข้อมูลของคุณหากคุณได้กำหนดไว้อย่างชัดเจนที่นั่น
dragon788

ขอบคุณสำหรับการแก้ปัญหา เพียงรายละเอียด: ในกรณีของฉันฉันต้องเรียกใช้พรอมต์คำสั่งในฐานะผู้ดูแลระบบ
A.Joly

30

ในกรณีของฉัน Git ใช้ Windows เพื่อเก็บข้อมูลรับรอง

สิ่งที่คุณต้องทำคือลบข้อมูลรับรองที่เก็บไว้ในบัญชี Windows ของคุณ:

เมนูข้อมูลรับรอง Windows


1
สิ่งนี้แตกต่างจากคำตอบนี้อย่างไร หรือคนนี้ ?
เลียม

20
git config --list

จะแสดง credential.helper = manager (นี่คือในเครื่อง windows)

หากต้องการปิดใช้งานชื่อผู้ใช้ / รหัสผ่านที่แคชนี้สำหรับโฟลเดอร์คอมไพล์ปัจจุบันของคุณเพียงแค่ป้อน

git config credential.helper ""

ด้วยวิธีนี้คอมไพล์จะถามรหัสผ่านทุกครั้งโดยไม่สนใจสิ่งที่บันทึกไว้ใน "ผู้จัดการ"


ฉันมีข้อผิดพลาดด้านล่างgit: 'credential-' is not a git command. See 'git --help'.แต่เพื่อความปลอดภัยฉันขอถอนคำตอบนี้เพราะเป็นรหัสเดียวที่ทำให้ฉันได้รับแจ้งให้ใส่รหัสผ่านใหม่ ฉันสงสัย แต่ถ้าเรื่องนี้ไม่ได้เป็นเพียงการหลอกลวงปัญหา (รหัสผ่านออกจริงๆ?)
Ribamar

rm -rf ~/.git-credentialsไม่: ทำ โปรดทราบว่ามันอาจแตกต่างกันไป ( git help credential-store)
ribamar

ขออภัยนี่ใช้งานไม่ได้จริง ๆ มันจะถามรหัสผ่านอีกครั้งและเก็บไว้อีกครั้ง จะลบ upvote ของฉันหากได้รับอนุญาต
ribamar

git config --unset credential.helperล้างข้อมูล คำตอบนี้ตั้งเป็นสตริงว่างและสร้างข้อผิดพลาดที่ @ribamar อธิบายไว้ในความคิดเห็น
Dark Castle

15

ใน Windows 2003 Server ด้วย "wincred" * ไม่มีคำตอบอื่นใดที่ช่วยฉันได้ cmdkeyผมต้องใช้

  • cmdkey /list แสดงข้อมูลรับรองทั้งหมดที่เก็บไว้
  • cmdkey /delete:Target ลบข้อมูลรับรองด้วยชื่อ "เป้าหมาย"

cmdkey / รายการ;  cmdkey / delete: เป้าหมาย

(* โดย "wincred" ฉันหมายถึงgit config --global credential.helper wincred)


ใช่cmdkeyเป็นบรรทัดคำสั่งคู่กับข้อมูลรับรอง Windows ที่อธิบายไว้ในคำตอบที่เลือก
nicobo

15

ข้อผิดพลาดนี้จะปรากฏขึ้นเมื่อคุณใช้หลายบัญชี Git ในเครื่องเดียวกัน

หากคุณใช้ macOS คุณสามารถลบข้อมูลประจำตัวที่บันทึกไว้ของgithub.com github.com

โปรดทำตามขั้นตอนด้านล่างเพื่อลบข้อมูลประจำตัวgithub.com

  1. เปิด การเข้าถึง Keychain
  2. หา GitHub
  3. เลือกgithub.comและคลิกขวา
  4. ลบ "github.com"
  5. ลองอีกครั้งเพื่อผลักหรือดึงเพื่อ git และมันจะขอข้อมูลประจำตัว
  6. ป้อนข้อมูลรับรองที่ถูกต้องสำหรับบัญชีที่เก็บ
  7. เสร็จสิ้น

    ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณนี้ทำงานได้อย่างสมบูรณ์บน mac os
babygame0ver

13

ต้องเข้าสู่ระบบด้วย GitHub ที่เกี่ยวข้องusernameและpassword

เพื่อล้างชื่อผู้ใช้และรหัสผ่านใน windows

แผงควบคุม \ บัญชีผู้ใช้ \ ผู้จัดการข้อมูลประจำตัว

แก้ไขข้อมูลรับรองของ windows

ลบผู้ใช้ที่มีอยู่และตอนนี้ไปที่พร้อมรับคำสั่งเขียนคำสั่งดันมันแสดง github ป๊อปอัพเพื่อป้อนusername/ emailและpasswordและ

ตอนนี้เราสามารถกดรหัสหลังจากสลับผู้ใช้


13

มีข้อผิดพลาดเดียวกันเมื่อทำการ 'git pull' และนี่คือวิธีที่ฉันแก้ไข

  1. เปลี่ยน repo เป็น HTTPS
  2. เรียกใช้คำสั่ง git config --system --unset credential.helper
  3. เรียกใช้คำสั่ง git config --system --add credential.helper manager
  4. คำสั่งทดสอบ git pull
  5. ป้อนข้อมูลรับรองในหน้าต่างเข้าสู่ระบบที่ปรากฏขึ้น
  6. Git pull สำเร็จแล้ว

--ระบบ? แล้วโลกล่ะ? ไม่มีขอบเขตอะไร? ขอบเขตการตั้งค่าหมายถึงอะไร
masterxilo

เพียงแค่มีขั้นตอนที่ 1 แก้ไขปัญหาของฉัน
zzxwill

11

ลบบรรทัดนี้ออกจากไฟล์. gitconfig ของคุณที่อยู่ในโฟลเดอร์ผู้ใช้ที่เข้าสู่ระบบใน Windows ในปัจจุบัน:

[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"

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


11

คุณต้องอัปเดตในตัวจัดการข้อมูลประจำตัวของคุณ

ไปที่แผงควบคุม> บัญชีผู้ใช้> ตัวจัดการข้อมูลรับรอง> ข้อมูลรับรองของ Windows คุณจะเห็นข้อมูลรับรอง Git ในรายการ (เช่น git: https: //) คลิกที่มันอัปเดตรหัสผ่านและดำเนินการคำสั่ง git pull / push จากทุบตี Git ของคุณและมันจะไม่ทิ้งข้อความผิดพลาดใด ๆ อีก


10

ในกรณีที่ใช้ตัวจัดการข้อมูลประจำตัว Git สำหรับ Windows (ซึ่งรุ่นปัจจุบันมักจะทำ):

git credential-manager clear

นี้ถูกเพิ่มเข้ามาในช่วงกลาง 2016 วิธีตรวจสอบว่าใช้ตัวจัดการข้อมูลรับรองหรือไม่:

git config --global credential.helper
→ manager

10

การใช้ git สำหรับ Windows รุ่นล่าสุดบน Windows 10 Professional และฉันมีปัญหาคล้ายกันโดยฉันมีบัญชี GitHub สองบัญชีและบัญชี Bitbucket ดังนั้นสิ่งต่าง ๆ จึงสับสนเล็กน้อยสำหรับ VS2017 ส่วนขยาย git และ git bash

ฉันก่อนตรวจสอบว่า git จัดการข้อมูลประจำตัวของฉันด้วยคำสั่งนี้อย่างไร (รัน git bash ด้วยคำสั่งที่ยกระดับขึ้นหรือคุณได้รับข้อผิดพลาด):

git config --list

ฉันพบรายการตัวจัดการข้อมูลประจำตัวดังนั้นฉันคลิกที่ปุ่มเริ่ม> พิมพ์ตัวจัดการข้อมูลประจำตัวของไปที่และคลิกซ้ายที่ไอคอนสีเหลืองปลอดภัยของตัวจัดการข้อมูลรับรองซึ่งเปิดตัวแอป จากนั้นฉันคลิกที่แท็บข้อมูลรับรอง Windows และพบรายการสำหรับบัญชี git ปัจจุบันของฉันซึ่งเป็น Bit-bucket ดังนั้นฉันจึงลบบัญชีนี้

แต่นี่ไม่ได้ทำเคล็ดลับดังนั้นขั้นตอนต่อไปคือการยกเลิกการรับรองและฉันทำสิ่งนี้จากไดเรกทอรีที่เก็บบนแล็ปท็อปของฉันที่มีโครงการ GitHub ที่ฉันพยายามผลักดันไปยังระยะไกล ฉันพิมพ์คำสั่งต่อไปนี้:

git config --system --unset credential.helper

จากนั้นฉันก็กด git และฉันได้รับพร้อมท์สำหรับชื่อผู้ใช้ GitHub ที่ฉันป้อน (ถูกต้องที่ฉันต้องการ) จากนั้นรหัสผ่านที่เกี่ยวข้องและทุกอย่างถูกผลักอย่างถูกต้อง

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


ทำงานให้ฉัน .. ขอขอบคุณคุณ
Krishnamoorthy Acharya

8

ในกรณีของฉันฉันไม่พบข้อมูลรับรองที่บันทึกใน Windows Credential Manager (Windows 7)

ฉันสามารถรีเซ็ตข้อมูลประจำตัวของฉันได้ด้วยการดำเนินการ

git config --global credential.helper wincred

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


สิ่งนี้ได้ผลสำหรับฉัน ฉันไม่มีรายการในตัวจัดการข้อมูลประจำตัวที่จะลบ
bdwakefield

7

คุณสามารถลบบรรทัดcredential.helper=!github --credentialsออกจากไฟล์ต่อไปนี้C:\Program Files\Git\mingw64\etc\gitconfigเพื่อลบหนังสือรับรองสำหรับ git


7
  1. ไปที่ C:\Users\<current-user>
  2. ตรวจสอบ .git-credentialsไฟล์
  3. ลบเนื้อหาหรือแก้ไขตามความต้องการของคุณ
  4. รีสตาร์ทเครื่องของคุณ

ทางออกเดียวที่ใช้ได้สำหรับฉัน
Wachburn

7

อย่างน้อยใน Windows git remote show [remote-name]จะใช้งานได้เช่น

git remote show origin

ไม่แน่ใจว่าทำไม downvote มันใช้งานได้ดี ฉันติดอยู่กับทุกสิ่งทุกอย่าง
Jason S

... และฉันเพิ่งใช้มันอีกครั้งในวันนี้ได้สำเร็จ ทุกครั้งที่ฉันเปลี่ยนรหัสผ่านที่ทำงานฉันต้องทำสิ่งนี้
Jason S

2
ใช้เสน่ห์สำหรับฉัน
IronAces

กันที่นี่ คุณไม่จำเป็นต้องอยู่ในไดเรกทอรีที่เก็บ
Nicola Musatti

6

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

git credential-cache exit

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


3

สิ่งที่แก้ไขได้ในที่สุดสำหรับฉันก็คือการใช้เดสก์ท็อป GitHub ไปที่การตั้งค่าที่เก็บและลบผู้ใช้: pass @ จากที่เก็บ url จากนั้นฉันพยายามผลักดันจากบรรทัดคำสั่งและได้รับพร้อมท์สำหรับข้อมูลรับรองการเข้าสู่ระบบ หลังจากที่ฉันทำให้คนเหล่านั้นในทุกสิ่งกลับไปเป็นปกติ ทั้ง Visual Studio และบรรทัดคำสั่งกำลังทำงานและแน่นอน GitHub เดสก์ท็อป

GitHub Desktop-> Repository-> Repository Settings-> แท็บ Remote

เปลี่ยนที่เก็บระยะไกลหลัก (ต้นกำเนิด) จาก:

https: //pork@muffins@github.com/MyProject/MyProject.git

ถึง:

https://github.com/MyProject/MyProject.git

คลิก "บันทึก"

ข้อมูลรับรองจะถูกล้าง


การรีเซ็ตต้นกำเนิดเป็นค่าเดียวกันจากบรรทัดคำสั่งบน Windows ได้แก้ไขปัญหาของฉันแล้ว ฉันใช้ GitLab ดังนั้นฉันจึงไม่สามารถใช้ GitHub Desktop ได้
David Vargas

3

สำหรับผู้ใช้ macOS:

ข้อผิดพลาดนี้จะปรากฏขึ้นเมื่อคุณใช้หลายบัญชี Git ในเครื่องเดียวกัน

โปรดทำตามขั้นตอนด้านล่างเพื่อลบข้อมูลประจำตัว github.com

  1. ไปที่ Finder
  2. ไปที่แอปพลิเคชัน
  3. ไปที่โฟลเดอร์ Utilities
  4. เปิดการเข้าถึง Keychain
  5. เลือก github.com และคลิกขวา

    ลบ "github.com"

ลองอีกครั้งเพื่อผลักหรือดึงเพื่อ git และมันจะขอข้อมูลประจำตัว ป้อนข้อมูลรับรองที่ถูกต้องสำหรับบัญชีที่เก็บ เสร็จสิ้น


3

สำหรับ Windows 10 ไปที่พา ธ ด้านล่าง

แผงควบคุม \ บัญชีผู้ใช้ \ ผู้จัดการข้อมูลประจำตัว

ตำแหน่งนี้จะมี 2 แท็บ

  1. ข้อมูลรับรองเว็บและ 2. ข้อมูลรับรอง Windows

คลิกที่แท็บข้อมูลรับรอง Windows และที่นี่คุณสามารถดูข้อมูลประจำตัว GitHub ที่เก็บไว้ภายใต้หัวข้อ "ข้อมูลรับรองทั่วไป"

คุณสามารถลบสิ่งเหล่านี้ออกจากที่นี่แล้วลองโคลนอีกครั้ง - มันจะถามชื่อผู้ใช้ / รหัสผ่านทันทีเนื่องจากเราเพิ่งลบข้อมูลประจำตัวที่เก็บไว้ออกจากระบบ Windows 10


2

หากต้องการล้าง Git Credentials Managers สำหรับ Windows แคช:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

หรือ

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache

2

ลองใช้เมื่อไม่มีสิ่งใดที่กล่าวถึงข้างต้นใช้งานได้สำหรับคุณ

git config credential.helper 'cache --timeout=30'

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



1

สร้างจากคำตอบที่ได้รับคะแนนโหวตสูงจาก @ Patthoyts ( https://stackoverflow.com/a/15382950/4401322 ):

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

ตัวอย่างเช่นฉันอยู่บน Linux และไม่ใช้การกำหนดค่าระบบดังนั้นฉันจึงไม่เคยใช้การ--systemตั้งค่าสถานะ แต่โดยทั่วไปจะต้องแยกความแตกต่างระหว่าง--localและการ--globalกำหนดค่า

กรณีการใช้งานของฉันคือฉันมีสอง Github crendentials; สำหรับการทำงานและสำหรับการเล่น

นี่คือวิธีที่ฉันจะจัดการกับปัญหา:

$ cd work
# do and commit work
$ git push origin develop
# Possibly prompted for credentials if I haven't configured my remotes to automate that. 
# We're assuming that now I've stored my "work" credentials with git's credential helper.

$ cd ~/play 
# do and commit play
$ git push origin develop                                                                   
remote: Permission to whilei/specs.git denied to whilei.                
fatal: unable to access 'https://github.com/workname/specs.git/': The requested URL returned error: 403

# So here's where it goes down:
$ git config --list | grep cred
credential.helper=store # One of these is for _local_
credential.helper=store # And one is for _global_

$ git config --global --unset credential.helper
$ git config --list | grep cred
credential.helper=store # My _local_ config still specifies 'store'
$ git config --unset credential.helper
$ git push origin develop
Username for 'https://github.com': whilei
Password for 'https://whilei@github.com':
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 1.10 KiB | 1.10 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/whilei/specs.git
   b2ca528..f64f065  master -> master

# Now let's turn credential-helping back on:
$ git config --global credential.helper "store"
$ git config credential.helper "store"
$ git config --list | grep cred
credential.helper=store # Put it back the way it was.
credential.helper=store

นอกจากนี้ยังเป็นที่น่าสังเกตว่ามีหลายวิธีในการหลีกเลี่ยงปัญหานี้โดยสิ้นเชิงเช่นคุณสามารถใช้~/.ssh/configคีย์ SSH ที่เชื่อมโยงกับ Github (หนึ่งสำหรับการทำงานหนึ่งสำหรับการเล่น) และโฮสต์ระยะไกลที่กำหนดชื่อเองเพื่อแก้ปัญหาการรับรองความถูกต้อง


1

หากต้องการเพิ่มไปยังhttps://stackoverflow.com/a/41111629/579827ของ @ericbn นี่คือคำสั่งตัวอย่างที่ฉันฝังไว้ในสคริปต์ฉันเรียกใช้เพื่ออัปเดตรหัสผ่านทั้งหมดของฉันเมื่อใดก็ตามที่มีการต่ออายุ มันอาจจะไม่ได้ใช้งานตามที่เป็นที่เป็นที่เฉพาะเจาะจงมาก cmdkey.exeแต่มันก็แสดงให้เห็นถึงการใช้งานในชีวิตจริงของ

⚠นี่คือเชลล์สคริปต์ที่ทำงานในcygwin

⚠ใช้งานได้เพราะฉันใช้ repos ส่วนตัว git ที่รับรองความถูกต้องด้วยรหัสผ่านเดียวกัน (คุณอาจไม่ต้องการวนซ้ำกับข้อมูลประจำตัวเดียวกัน แต่คุณอาจใช้/listคำสั่งตัวอย่างนี้ซ้ำเพื่อแยกรายการข้อมูลรับรองที่ลงทะเบียนแล้ว) ⚠

entries=`cmdkey.exe /list: | grep git | sed -r -e 's/^[^:]+:\s*(.*)$/\1/gm'`
for entry in ${entries}
do
    cmdkey.exe "/delete:${entry}"
    cmdkey.exe "/generic:${entry}" "/user:${GIT_USERNAME}" "/pass:${GIT_PASSWORD}"
done

0

หากคุณได้รับการรับรองความถูกต้องโดยใช้คู่กุญแจของคุณคุณสามารถลบหรือย้ายกุญแจส่วนตัวของคุณหรือหยุดตัวแทนกุญแจและพยายาม


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