読者です 読者をやめる 読者になる 読者になる

mfks17's blog

趣味や思った事を書いていくと思います

chapter1 gitとは?

git

ここでは、簡単にgitとはなんぞやという事を自分なりの言葉でまとめています。

分散型版管理システム (distributed version control system)

分散型

分散型システムは、状態の記録(コミットする事)と、変更履歴の公開(リポジトリ間での同期)が、分離されている。
→ユーザ個人で、リポジトリのコピーを所有している。

git、Monotone、mercurial など

集中型

リポジトリが1つだけ存在し、みんなでその唯一のリポジトリへ、アクセスするので、
コミットすることによって、なされる変更の記録が即時にリポジトリに反映されてしまう。

CVSSubversion など

バージョン管理の目的を機能 大まかに2つ

開発変更履歴を正確に記録すること
記録をもとに、調査を行えること。

|-以前の状態に戻れる。
|-変更履歴を調べる。

ディレクトリ構造全体を1つの単位として記録する。

複数のファイルからなるプロジェクトをを管理する場合に、
1つのファイルだけ、もとの状態に戻したのでは、つじつまが合わない場合がある。
なので、論理的な1つの変更を1つの単位として記録できることが、重要。
→コミットがアトミック?

「なぜ」と「誰が」を記録する。

理由

 長い時間かけて変更が繰り返されているので、たとえ自分が変更したものであっても、
 なぜそのような変更をしたなんて、正確に覚えているとは限らない。

 →「変更履歴を調べる」ことをより効果的にできる。

何を版管理するか?

何もかもを全てを管理システムに入れてしまう? ← No

メタデータは、記録しない。(ファイルの所有者情報など)
ソースコードをコンパイルしてできた、オブジェクトファイル
→版が変われば変わってしまう。本末転倒。

gitでは、ファイル毎のメタデータとして、実行可能ビットのみを記録している。

6ページの「仮に実行可能ビットを付ける以外の変更を次郎さんがまったくしなかったとしても、
その変更には後からみて意味がある。「同じプロジェクトに関わるどの人にとっても、
このファイルは実行可能でないといけない」という意見を次郎さんはこの変更で表明している、
ということになるわけで、だから記録するのです。」の下りが、あまり理解できなかった。
→つまり、どういうことだ?

このchapterの感想

この記事を見ていると、なんで最初からこの使用にしなかったの?
と思う程、便利に使えそう。その分、扱いが面倒くさそう。

入門Git

入門Git