Gitというバージョン管理システムについて、自分はSubversionしか使ってなくて、興味はあったのだけど使ったことなかったので、とても勉強になりました。
今回の僕的まとめ。
Gitのような分散リポジトリは大きなプロジェクトじゃないと使う意味ないと思って敬遠してたけど、実は一人だけプロジェクトで履歴残したいだけくらいの用途でも使いやすい!てかその用途でもSubversionより楽そう。
とりあえずGitHubのアカウント取って、手持ちのソース乗せて使ってみる!
他、いろいろ知ったこと、思ったことなどつらつらと。
- gitは「ギット」。ずっと「ジット」だと思ってた。
- 既存のソースをリポジトリに突っ込むのが超楽。というか「git init」で既存のソースがそのままリポジトリになるみたいなイメージ。
- Subversionではファイルサーバにリポジトリ置いてノートPCにチェックアウトして使う、みたいにバージョン管理兼バックアップ的使い方してたんだけど、それには少し準備が必要。
- そうやるためにはgitサーバ立てるかssh経由でそっちのリポジトリ書き換えるようにしてやるとかなんとか、そんな感じらしい。その辺はSubversionと同じか。
- リポジトリからチェックアウトしてきて使う、というような意識ではない感じ。リポジトリ内のすべてが手元にあるから。
- リポジトリをまるっとコピーしてくるので、その後はどっちが親とかそういう関係ではない。なんかP2Pっぽいと思った。
- コピー元情報を持ってるのでそこに対して「この修正を反映してくれリクエスト」みたいなのを簡単に出せて、それを許可すると修正が反映される、みたいな使い方らしい。
- 普通に何人かがコミッターになっててという運用も可能。ハイブリットでもいける。
- ブランチが凄くお手軽。なんかのバグ修正用毎にブランチ切って…という運用が敷居がとても低い。
- というかどうやらそういうのが正しいgitの使い方っぽい。針葉樹林的なブランチのイメージというか。
- 修正でもaddしてからcommitが必要。めんどくさ。が「git commit -a」でSubversion的動作してくれるからいいか。
- mergeが賢いみたいな話を聞いたことがあったんだけど、そこはよくわからず。
- gitはdiffじゃなく全ファイルイメージを持ってるって話を聞いてたが今は違うらしい。
- 少なくともバージョン毎で同一のファイルはコピーではなくシンボリックリンクみたいな扱いらしい。
- WindowsのクライアントもTortoiseGitがあって、それはWindows用のコマンドラインgitクライアントmsysgitのGUIのガワって位置づけらしい。
- 日本語ファイルもUTF-8なら扱えるらしいがWindowsのファイル名ってUTF-8なんだっけ?
- githubは公開してる分には無料。非公開で使いたいときは有料。なるほどなあ。
- github内で分岐したりパッチ取り込んだりしたのをグラフィカルに見れる。これはとても良い感じ。
- なんか質問した内容をとみたさんと鍋太郎さんに答えてもらう会みたいになってしまった。次回までには自分の試した報告などが出来ると良いのだが。
- 本は入門Git: 濱野 純が良いらしい。gitがなぜこういう設計思想で内部構造がどうなってるかとかそういうのの説明があるため。
(関連)
長野ソフトウェア技術者グループ(NSEG) 第4回勉強会 - モーグルとカバとパウダーの日記
http://d.hatena.ne.jp/stealthinu/20100626/p1