ลบข้อมูลรับรองออกจาก 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.