我已经厌倦了每次在向 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にはどのプロトコルを使えばよいのか?

广告
将在 10 秒后关闭
bannerAds