朝寝して宵寝するまで昼寝して時々起きて居眠りをする
流行に盛大に乗り遅れていますが github のアカウントを取得してみたので、その備忘録的なメモです。
git とは分散型バージョン管理システムで、要するに CVN とか SVN に似たプログラムのソースコードなどをバージョン管理してくれるものですが、これらが中央集権型なのに比べて git は分散、つまりローカルにリポジトリの履歴を持つために中央サーバが落ちていてもリビジョン間の履歴が調査可能。(以上 Wikipedia より。もとは Linux カーネルのソースコード管理のために、リーナス・トーパルズによって開発されたらしい)
で、github はその git を用いたプロジェクトのホスティングサービス。と、はてなキーワードには書いてありました。要するにみんなが使える git のサーバという感じなのでしょうか。
別に管理するほどのソースを書いているわけでもないのですが、先日 .emacs に書きためてきた設定が半分消え去って、バージョン管理も大事なのだと痛感したので使ってみようかということになった次第です。
無料で100M使えるアカウントをくれますが、お金を払わないと非公開にすることはできないので、.emacs とか .xyzzy とかいう設定ファイルなんかを堂々と公開バージョン管理していていいのかという問題はさておきます。
github にアカウントがない場合はまずアカウントを適当に作成します。デフォルトアイコンが気になるとかいう場合は Gravatar でぐぐったりすると良いようです。別に支障は出ないのでこのまま行きます。
今回はローカル環境が Windows なので、msysGit を導入しました。
インストールするときに聞いてくるこの辺は好みで設定してください。自分の備忘録メモ。
「Select Additional Tasks」→「Create a Desktop icon」のみチェック(「Windows Explorer~ の下2つにもチェックを入れてインストールしましたが邪魔だったのでレジストリをいじって消しました)
「Adjusting your PATH environment」→「Use Git Bash only」
「Choosing the SSH executable」→「OpenSSH」
「Choosing CR/LF behavior」→「Commit line encoding as they are」(改行コードの設定を勝手に変更しない)
デフォルトで msysGit をインストールすると Git bush のショートカットがデスクトップにあるのでこれを起動します。
最初に SSH の公開鍵を設定します。
$ ssh-keygen -C "your@email.com" -t rsa
パスフレーズを聞かれるので、2回同じ文字列を入力すると SSH の公開鍵が生成されます。場所は「C:\Documents and Settings\[Windows のアカウント名]\.ssh\」(Win2000/XP の場合。Vista 以降は「C:\Users\[Windows のアカウント名]\.ssh\」)または、環境変数 HOME を設定したらそのフォルダ(らしい)です。ファイル名は「id_rsa.pub」。
できた id_rsas.pub の中身を Your Account - GitHub の 「SSH Public Keys」のところにコピペします。
ついでに、自分の名前やメールアドレスを設定。(省略可)$ git config --global user.name "Your Name Here" $ git config --global user.email your@email.com
ここまでが下準備です。1回やれば終了。
準備ができたら github に新しいリポジトリを作成します。(「Create a Repository」)
ここで Type すべきコマンドの一覧が出るので、基本的にはこれを打てば OK。
まずはローカルにプロジェクト用のフォルダを作成しておきます。 ex. e:\data\project
作成したフォルダの中まで移動します。
$cd /e/data/project
Git で管理することを明示。gitからファイルを送受信することができるようになる。
$git init
README というファイルをリポジトリに追加(フォルダも追加可能)
$git add README
リポジトリにコミット
$git commit -m 'コミットメッセージ ex. first commit'
リモートリポジトリの追加(これは新規にリポジトリを作成した最初の1回だけ)
$git remote add origin git@github.com:[githubのユーザ名]/[リポジトリ名].git
リモートのリポジトリに変更を適用
$git push origin master
これでおしまいです。
逆に github にあるファイルをとってくる場合には、
$git pull origin master
誰かが作って github で公開しているソースを持ってくる場合。(リポジトリの複製)
$mkdir temp $cd temp $git clone git://github.com/[アカウント]/[リポジトリ名].git
他のリポジトリの変更点をローカルリポジトリにマージする場合は、clone ではなく pull。
$git pull git://github.com/[アカウント]/[リポジトリ名].git
ちなみに Windows の標準文字コード Shift_JIS のファイルを push するしたものを Web 上で見ると日本語が思い切り文字化けしますが、これは github の標準文字コードが UTF-8 であるためのようです。pull してくるには問題がないのと、今扱っているコード(xyzzy lisp)は Shift_JIS でないと問題が生じる場合があるようなので、特に気にせず Shift_JIS でいこうと思います。