対象読者
- Gitをより深く理解したい方
- Gitの自作に興味がある方
Gitの内部構造を学ぶ意義
Gitの使い方を知っている人でも、それぞれのサブコマンドが実際どういった挙動をしているか、ましてや内部構造がどうなっているかを学んだことがある人は少ないかもしれません。というのも、Gitが内部を知らなくとも十分使える優秀なツールになっているからだと思います。
しかし、Gitの内部実装を知ることで、コマンドの挙動を正確に理解できるだけでなく、Gitを使っていて何らかの問題が起きたときにも、自分で対処できるようになります。そうしたGitの地力を鍛えるために、内部構造の把握は重要な要素になってきます。
また、今回の内容を学べば、Gitの大枠を実装することもできてしまうので、興味がある方はぜひ挑戦してみてください。
Gitについての誤解
それでは、まずGitについて多くの人が誤解しているであろう点を挙げておきます。
- commitとは、親commitとの差分を保存しているもの
- branchとは、分かれた枝のこと
- resetとは、commitを無かったことにできるコマンド
私自身も、Gitの内部構造を学ぶ前はこういう理解でした。しかし、これらは実はすべて間違いなのです。
ここからは、Gitがどのようにしてバージョン管理を実現しているかを理解するために、内部構造を紐解いていきます。具体的には、.git
ディレクトリの中身について取り扱っていきます。