Xây dựng từ câu trả lời được bình chọn cao của @ patthoyts ( https://stackoverflow.com/a/15382950/4401322 ):
Câu trả lời của anh ta sử dụng nhưng không giải thích cấu hình "cục bộ" so với "toàn cầu" so với "hệ thống". Các tài liệu git chính thức cho họ là ở đây và đáng đọc.
Ví dụ: tôi đang dùng Linux và không sử dụng cấu hình hệ thống , vì vậy tôi không bao giờ sử dụng --system
cờ, nhưng thường cần phân biệt giữa --local
và cấu hình --global
.
Trường hợp sử dụng của tôi là tôi đã có hai xu hướng Github; Một cho công việc, và một cho chơi.
Đây là cách tôi sẽ xử lý vấn đề:
$ 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
Cũng đáng lưu ý rằng có nhiều cách để tránh vấn đề này hoàn toàn, ví dụ, bạn có thể sử dụng ~/.ssh/config
các khóa SSH được liên kết cho Github (một cho công việc, một để chơi) và các máy chủ từ xa có tên tùy chỉnh tương ứng để giải quyết bối cảnh xác thực.
~/.netrc
tập tin?