สร้างจากคำตอบที่ได้รับคะแนนโหวตสูงจาก @ 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 (หนึ่งสำหรับการทำงานหนึ่งสำหรับการเล่น) และโฮสต์ระยะไกลที่กำหนดชื่อเองเพื่อแก้ปัญหาการรับรองความถูกต้อง
~/.netrc
ไฟล์ไหม