Shoken Startup Blog

KitchHike Founder/CTO

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

2015.3.14 追記

"鍵でやるべき"とブックマークコメントをもらいましたが、その通りです。SSH認証キーが設定できる環境なら鍵認証でやるべきです。鍵ペアを作成後に公開鍵をGithubに登録し、~/.ssh/configで以下のように設定しましょう。

Host github.com
  User git
  Hostname github.com
  IdentityFile ~/.ssh/{秘密鍵}

SSH認証キーが設定できないような環境では、本記事を参考にしてください。

追記終わり


Githubへpushするたびにユーザ名(Emailアドレス)/パスワードを聞かれて入力するのは面倒なので、省略したい。
MacLinuxで確認しました。

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

こんな感じで自分の$HOME直下に.netrcファイルを作成する。

machine github.com
login syokenz
password xxxxxxx

もし、後述する2つ目の方法でURLにユーザ名を埋め込んでいた場合、パスワードを聞かれるので注意。その場合、何も入力せずにリターンすれば、~/.netrcの設定を見てくれる。

参考
Githubをファイアウォールの内側から使えるようになった - idesaku blog

2. git cloneするURLに埋め込む

こんな感じ。

git clone https://username:password@github.com/syokenz/sandbox.git

ただし、username・passwordのどちらかに@が入っていたらproxy認証でエラーとなった。&は\でエスケープできたけど、@はダメだった。他にも使えない記号があるかもしれない。

2015.3.14 追記

icoxfog417さんにコメントで教えてもらいました。@は、%40 (エンコードした値)を使えば通るようです。

追記終わり

clone済のリポジトリの設定を変更するには以下のファイルを変更する。

{cloneしたリポジトリDir}/.git/config