我已经厌倦了每次在向 GitHub 推送时都被要求输入用户名和密码
Context
因为在 GitHub 上进行 push 时,用户名和密码的使用变得麻烦,所以我决定记录下来。
※ 在设置了两步验证之后,密码周围变得很麻烦。
造成这个问题的原因是什么?
由于远程仓库指向的是通过HTTP进行通信。
当你向 https://github.com/ryysud/golang-crud-api.git 进行推送时,会要求输入用户名和密码。
$ git remote -v
origin https://github.com/ryysud/golang-crud-api.git (fetch)
origin https://github.com/ryysud/golang-crud-api.git (push)
$ git push origin develop
Username for 'https://github.com':
Password for 'https://github.com':
remote: Anonymous access to ryysud/golang-crud-api.git denied.
fatal: Authentication failed for 'https://github.com/ryysud/golang-crud-api.git/'
处理方案
使用SSH与远程代码仓库进行通信
只需将通信更改为使用SSH。
$ git remote set-url origin git@github.com:ryysud/golang-crud-api.git
每次克隆存储库并进行设置非常繁琐,虽然这样也可以,但为了避免这种情况,将以下设置写入~/.gitconfig文件将让你非常幸福。
[url "github.com:"]
InsteadOf = https://github.com/
InsteadOf = git@github.com:
很棒的感觉 (๑•̀ㅂ•́)و✧ – de
# ユーザー名とパスワードを聞かれる
$ git push origin develop
Username for 'https://github.com':
Password for 'https://github.com':
remote: Anonymous access to ryysud/golang-crud-api.git denied.
fatal: Authentication failed for 'https://github.com/ryysud/golang-crud-api.git/'
# https での通信を行うようになっている
$ git remote -v
origin https://github.com/ryysud/golang-crud-api.git (fetch)
origin https://github.com/ryysud/golang-crud-api.git (push)
# .gitconfig に URL の置換処理を追記 =======================
$ vi ~/.gitconfig
... 略
[url "github.com:"]
InsteadOf = https://github.com/
InsteadOf = git@github.com:
# =======================================================
# ssh での通信を行うように置換されていることがわかる
$ git remote -v
origin github.com:ryysud/golang-crud-api.git (fetch)
origin github.com:ryysud/golang-crud-api.git (push)
# ユーザー名とパスワードを聞かれることがなくなった
$ git push origin develop
Everything up-to-date
参考文献
-
- git パスワード を毎回聞かれる問題の解決方法
GitHubのremote URLにはどのプロトコルを使えばよいのか?