#setlinebreak(on) *VCSの特徴 [#rf5a7834] 歴代のVCS(Version Control System: バージョン管理システム)の特徴 |名称|環境|リポジトリ|h |RCS |スタンドアロン|なし(foobar.c,v)| |CVS&br;Subversion|ネットワーク |単一のものを共有| |Git |~|複数のものが分散| *リポジトリの内部構造 [#h2ffffc8] Gitではコミットする度にリポジトリ内部にひとまとまりのデータ構造が作成される。 #ref(GitCommit.png) -作成されるデータ構造の内訳 --コミットオブジェクト 一回のコミットそのものを表すデータオブジェクト。 ---コミットオブジェクトを起点として、そのコミット時点の全ての情報を参照できる。 ---コミットオブジェクトにはその内容から算出されるSHA1のハッシュが識別子として割り当てられる。これをコミットIDと呼ぶ。 ---コミットオブジェクトはその直前のコミットオブジェクトを指し示している。これを手繰ってゆくことでコミットの履歴を新しい方から古い方へ参照することができる。 --ツリーオブジェクト コミットオブジェクト毎に、管理しているファイルの階層関係を表すオブジェクト ---コミットオブジェクトはおおざっぱに言うとファイルの階層関係を記録しているだけ。 OSが管理するファイルシステムそのものを記録しているわけではないので、ファイルやディレクトリの属性がすべて記録されているわけではない。 特にそのファイルのオーナやグループは全く記録されていない。 --BLOB (Binary Large OBject) ファイルの内容を保持するオブジェクト。 ---ファイルオブジェクトにもファイル内容のSHA1のハッシュ値がIDとして割り当てられる。 Gitでは、BLOBのオブジェクトIDが同じであれば、実ファイルシステム上で異なるファイルであっても、あるいは全く関係ない別のリポジトリのファイルであっても、すべて「同一のもの」として扱われる。 -ブランチ #ref(Branches.png) --「枝」じゃない *分散リポジトリ [#xf535bc2] #ref(DVCS.png,around,right) --追跡ブランチ --refspec #img(,clear) *おすすめドキュメント [#i179cf4a] -Git入門:Git初学習者のための効率的な学習方法を考えてみた --http://blog.takanabe.tokyo/2014/12/13/74/ *ツールとか [#j61bde5d] -GUIクライアント -リポジトリ管理 *開発フロー [#fe8160b8] http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html *雑感 [#x011c350] -時代の要請 -黒い画面怖い -ほんこれ >Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self­evident. Data structures, not algorithms, are central to programming. -- Rob Pike