Mac环境 解决git push 返回 The requested URL returned error: 403
打开 /Users/xxx/.gitconfig 文件,如果显示隐藏文件后还是找不到这个文件,那么可以使用以下任意的命令,成功后会在你的HOME路径下出现这个文件,
// 配置git 的缺省编辑器 例如:emacs
$ git config --global core.editor emacs
//配置git 的用户名和邮箱
$ git config --global user.name "xxxxxx"
$ git config --global user.email "xxxx@.com"
执行这些命令后就能生成.gitconfig 配置文件,然后文本编辑器打开.gitconfig文件,清除里面的命令行生成的内容。
如果你的电脑本来就有.gitconfig文件, 找到下面这句话删除,保存退出。
[credential] helper = xxx
这个时候输入命令
git config credential.helper
查看本机的credential 是否已经被清空。
如果输入了git config credential.helper
命令之后还是出现了osxkeychain
, store 或者 cache 等,说明 git 的配置还是没有被清空,我参考了stackOverFlow上这个问题 有人给了这样一个命令查看 credential.helper 所在的文件目录(可能一个电脑上有多个.gitconfig文件),
git config --show-origin --get credential.helper
file:/Applications/Xcode.app/Contents/Developer/usr/share/git-core/gitconfig osxkeychain
如果你的Mac上还有Xcode的话,那么Xcode中还会有一个.gitconfig文件,找出他然后打开,清空[credential]。
再次输入
git config credential.helper
如果没有任何反应,那么 credential 就是已经清空了,这个时候你无论在任何依托 git 的代码托管网站上 push 都会要求你输入用户名和密码了,而且每次都会要求你输入,是不是又有新的烦恼了呢?
2. 重新配置
理解了git 保存密码的原理,那我们可以按照自己的想法设置了,如上所述,可以设置成cache,store,keychain,这里我说下保存在磁盘中(store)和钥匙串中(keychain)两种方式。
配置成store
命令git config —global credential.helper store
或者 /Users/xxx/.gitconfig 打开.gitsonfig直接修改文件credential.helper=store
然后第一次push 的时候会提示输入用户名密码,输入完成之后/Users/xxx/ 文件夹下会生成一个新的文件.git-credentials,双击打开,里面保存了你的用户名密码等信息:
https://用户名:密码@网址
但是这种储存方式,在本地只会储存一个用户名和密码,例如我本地.git-credentials文件的内容是
https://用户名1:密码1@git.coding.net
那我如果想 push 到 github 上,又要重新输入用户名密码,你可以再次在 .git-credentials 文件中添加一个 url,格式是一样的,这次的用户名和密码改成你的 github 用户名和密码
https://用户名2:密码2@github.com
注意:如果在设置成global store之前/Users/xxx/ 文件夹中如果已经有了.git-credentials 文件,最好先删除,防止系统自动去那里寻找用户名密码。
- 配置成osxkeychain
命令
git config --global credential.helper osxkeychain
也或者/Users/xxx/.gitconfig 打开 .gitconfig 直接修改文件。
这个时候 git 是从你的钥匙串中访问储存的密码,同理如果第一次在钥匙串中没有找到用户名密码,则要求你输入,输入之后下次就不用再次输入啦。
与 store 方式不同的是(你的每个平台用户名和密码都不一样):
假如第一次 push 到 github,那么 keychain 记录了 github 的用户名密码,
第二次你想推送 coding,那么 keychain 没有 coding 的用户名密码,就会要求你再次输入。只是 store 的方式����� 我们需要手动添加 url,这里不用了。
我们可以查看 Mac 上的钥匙串,push 一次后就会新出先一个对应网站的钥匙串,你也可以双击访问,查看密码。
注意: 如果在/Users/xxx/ 文件夹中已经有了 .git-credentials 文件,要先删除,否则系统自动去那里寻找用户名密码。
这样就解决了git 缓存密码后所带来的问题。希望对你有所帮助!
还没有评论,来说两句吧...