Edited at

GitHubでユーザ名・パスワード省略(push, pull)

More than 3 years have passed since last update.

Amazon Linux (AWS - EC2)で確認しました。


ユーザ名のみ省略する方法


1. clone済のリポジトリの設定を変更する場合

{cloneしたリポジトリDir}/.git/configを編集します。

[remote "origin"]項目のurlusername@を追加する。


.git/config

[remote "origin"]

url = https://username@github.com/username/repository.git


2. git cloneするURLに埋め込む(新規でcloneする場合)

git clone https://username@github.com/username/repository.git


ユーザ名・パスワード両方省略する方法


1. ~/.netrcにユーザ名/パスワードを書く


~/.netrc

machine github.com

login username
password xxxxxxx


2. urlusername:password@を追加

{cloneしたリポジトリDir}/.git/configを編集します。

[remote "origin"]項目のurlusername:password@を追加する。


.git/config

[remote "origin"]

url = https://username:password@github.com/username/repository.git

usernamepassword@が含まれている場合は、%40 (エンコードした値)を使えば通るようです。

他の記号(&など)は\でエスケープできるようです。

※セキュリティ的に心配なのでこちらの方法は試してません。どちらの方法にしても、ファイルに生のパスワードを書かないといけないので、セキュリティ上やらないほうがいいと思います。

特に、2番めのURLにパスワードを追加する方法は、HTTPSとは言えURLにパスワードが含まれてしまうので、パスワードを生でインターネット上に送信しているようなものなんじゃないかと思います。


設定の優先度

両方設定した場合、~/.netrcの設定が優先されます。

優先度としては、~/.netrc > .git/configという感じのようです。

例えば、


  • ユーザ名のみの設定(.git/config


.git/config

[remote "origin"]

url = https://username@github.com/username/repository.git


  • ユーザ名・パスワードの設定(~/.netrc


~/.netrc

machine github.com

login username
password xxxxxxx

の両方を設定した場合、ユーザ名・パスワード両方省略されました。


参考URL

Githubへのpushでusername/passwordを省略する方法2つ