totoisegit_username.png
TotoisGitを使って、httpsでGithubにpushするといっつもこれが出てうざいですよね。

かといって、Firewallに穴を開けて git:// を通すなんてことはできるけどできないし(察してください)。

あんまり詳しくない僕は、「公開鍵も登録してるしPuttyのPageantも立ち上がってるのになんでだろう?どっかの設定が悪いのかな?ほんとウインドーズはめんどくさい。」なんて思いながらも、いつも大人しく打ち込んでいたわけですが、BLOGのアップロードを自動化させようとすると避けては通れない道なんで少し調べてみました。

方法としては、Unix由来?の .netrc を使う方法とGit1.7.9から使える git credential があるみたい。早速Gitのバージョンを確認してみると、

> git --verison
git version 1.8.4.msysgit.0

ってことで、 git credential を使うことにする。

git credential には、ID:PASSを store する方式と cache する方式の2つがある。 store にすると .netrc と同じようにファイルへ平文で保存し、 cache にするとキャッシュデーモンが立ち上がって指定時間キャッシュしてくれる仕組みみたい。

どっちを選ぶかって言うと、当然Cache方式なんだけど結論から言うとWindowsでは動かないみたい。Windowsでも動くようにする git-credential-winstore ってのもあるみたいだけど、他の人が使うこともないパソコンなんでそこまではしなくてもいいかな?起動時にパスワード入れてるし。なんて思いながら泣く泣く store 方式を採用することに...

設定自体は簡単で、 git config --global credential.helper store と打ち込むだけで設定は終わりで、実際に試してみると1度目はID:PASSを聞かれるけど2回目以降は入力なしで進むことが出来るようになった。そしてどこにストアされるかというと、 ~/.git-credentials に保存されている。見たんだけど、これって内容的にはBASIC認証と同じ?

ここまで来て、またひとつ疑問が出てくる。

Githubを始めた頃に強要された公開鍵ってどこで使われてるんだろう?

色々調べてみると、Githubは最初 git:// での接続しか提供してなくて、そのgitプロトコルの中でsshを使ってたから必要だったってことみたい。その後 https:// での接続もサポートされた。
実際にGithubに登録してある公開鍵を削除してやってもpushに問題はなかったから、今は特に公開鍵登録する必要はないみたい。

ってことでまとめると、

  • F/Wの中からGithubにつなぐのは https:// でやればOK
  • https:// でつなぐならGitを1.7.9以上にして credential.helper を使う
  • Windowsの場合は credential.helper の種類は store にしておく

って感じかな?

ちょっと平文で保存されるのが、旧来の .netrc と同じでイマイチだけど、まぁ仕方ないよね。