Knowledge
- はじめ(以下「は」):じっとってなんなのです?
- のどか(以下「の」):じっとじゃないわ、Git(ぎっと)よ。一言でいえば、分散型のバージョン管理システム(DVCS)ね。Linuxを開発したLinusが2005年に2週間で基本を作り上げたことで有名ね。
- は:バージョン管理……です?
- の:プログラムや文章のようなファイルの一連のまとまりの歴史(バージョン)を管理することね。プログラムでいうと、前まで動いていたのにおかしな挙動をするようになった時や、文章でいうといったん書き直したのだけど後から元の書き方の方が良かったなんて思うこと、あるんじゃない?
- の:バージョン管理システムを使うとそういうときに過去にさかのぼってバグの原因や特定時点の記述を探ることができるの。
- は:プロジェクト全部をバージョン管理するのですか?
- の:そうね、やり方にもよるけど基本的にはそのときの成果物の状態を復元するために必要なもの全部を管理すべきだわ。画像や音声などのバイナリデータも成果物の一部であれば管理すべきだけど、同じバイナリデータでも実行ファイルは別に管理しなくてもソースコードから作り出すことができるわよね。
- は:基本的には全部ですが、別になくとも困らないものは管理しないでよいということですね。
- の:そうね。またこれは別軸の話になるのだけど、画像なども大量になることが最初から分かっているのであれば、それはそれで別に管理した方がスマートかもしれないわね。
- は:では「分散型」というのはどういうことなのです?
- の:分散型というのは、バージョン管理を行うためのデータベース、リポジトリというのだけどこれを一カ所ではなく、いろいろな場所においておけるという意味よ。
- は:リポジトリを複数の場所に置く理由があるのです?
- の:「分散型」の反対は「集中型」というのだけど、これにはリポジトリへの記録にネットワークが必要という欠点があるの。一人で作業するのであれば自分のマシンにおいても大丈夫なんだけど、複数人でやる場合はどうしても共通の場所が必要よね。
- の:そういうときにリポジトリを分散、すなわち自分のマシン上にもおいておけば、別にネットワークがなくともリポジトリへの書き込みを行うことができるの。もちろんあとで他の人が行った変更と統合しなくてはいけないけど、作業するのに場所を選ばないというのはそれを補ってあまりある魅力よ。
- の:まずはこのあたりの基本的な知識について説明していきましょう。