Membangun dari jawaban tinggi @ patthoyts ( https://stackoverflow.com/a/15382950/4401322 ):
Jawabannya menggunakan tetapi tidak menjelaskan konfigurasi "lokal" vs. "global" vs. "sistem". Dokumentasi git resmi untuk mereka ada di sini dan layak dibaca.
Sebagai contoh, saya menggunakan Linux, dan tidak menggunakan konfigurasi sistem , jadi saya tidak pernah menggunakan --system
flag, tetapi biasanya perlu membedakan --local
dan --global
mengkonfigurasi.
Kasus penggunaan saya adalah saya punya dua crendential Github; satu untuk bekerja, dan satu untuk bermain.
Inilah cara saya menangani masalah:
$ 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
Perlu juga dicatat bahwa ada cara untuk menghindari masalah ini sama sekali, misalnya, Anda dapat menggunakan ~/.ssh/config
dengan kunci SSH terkait untuk Github (satu untuk bekerja, satu untuk bermain) dan juga host jarak jauh yang diberi nama kustom untuk menyelesaikan otentikasi kontekstualisasi juga.
~/.netrc
file?