未来エンジニア養成所Blog

プログラミングを皆に楽しんでもらうための情報をお届けします。

Gitの基本的な仕組み

前回までの流れ

Gitってなんのために使う? - 未来エンジニア養成所Blog

Gitのインストール(Mac OS編) - 未来エンジニア養成所Blog

Gitのインストール(Windows編) - 未来エンジニア養成所Blog



Gitはどのようにデータを記録しているのか

Gitはスナップショットを記録しています。
どういうことかというと、バージョンを保存する時にそのファイル全てをスナップショットとして保存しているのです。


「ファイルA」「ファイルB」「ファイルC」と3つのファイルがあったとすると、まずその3つのファイルを「バージョン1」として保存します。丸々全てを保存しているのです。


次に「ファイルA」はそのままで、「ファイルB」を「ファイルB1」へ、「ファイルC」を「ファイルC1」へ変更します。その時の状態を「バージョン2」として保存します。
そのときにGitは「ファイルB1」と「ファイルC1」は「ファイルB」と「ファイルC」との差分ではなく「ファイルB1」と「ファイルC1」をスナップショットとしてファイルをまるごと保存しています。
「ファイルA」に関しては変更されていないので、バージョン1で保存されたデータを使います。


このようにすることで、バージョン2では「ファイルA」「ファイルB1」「ファイルC1」のデータがまるごと保存されています。


次に「ファイルA」を「ファイルA1」へ、「ファイルC1」を「ファイルC2」へ変更します。
その状態を「バージョン3」として保存します。
この場合「ファイルA1」と「ファイルC2」は新しくまるごと保存して、「ファイルB1」は前回保存された分を使い回します。それでバージョン3が記録されます。


このようにGitはスナップショットとしてデータを記録します。


Gitはスナップショットを記録する
Gitはスナップショットを記録する


スナップショットとして記録することで、複数人で開発する時のスピードを上げることができます。
複数人での開発の際、複数人が平行で開発できるようGitでは「ブランチ」というものを切って、開発のバージョンを枝分かれさせて開発していきます。
このブランチでバージョンを枝分かれさせる際や、ブランチを統合させるマージする時にスナップショットだと非常に作業が早くできます。
Gitがデータを差分という形で持っていると、ブランチを切ったりマージをしたりする時に、差分をいちいち計算しないといけなくなります。
しかし、スナップショットで保存しておけば、差分の計算をしなくて済む分、とても早くブランチを切ったり、マージをしたり出来るようになります。


バージョンを記録しておくことでどのような事が出来るようになるのか

バージョンを記録しておくことで、以前の状態に戻すことができるようになります。


バージョンというものを記録する時、Gitは「コミット」と呼ばれるものをします。このコミットというのが、直前のコミットを記録しています。
どういうことかというと、「バージョン3」の前に「バージョン2」を保存していて、「バージョン2」を保存する時に「コミット2」を行っていたとします。すると、「コミット3」が「コミット2」を直前のコミットとして記録します。同じように「コミット2」が「コミット1」を直前のコミットとして記録します。
このようにコミットする時に直前のコミットがどれかということを記録することで、最新のバージョンから以前のバージョンにたどることができます。


そして、それぞれのバージョンをファイルの状態をスナップショットとして保存しているので、その状態に戻すことができます。


コミットをたどることで以前の状態に戻せる
コミットをたどることで以前の状態に戻せる


続き記事
phoeducation.work



さらに詳細を知りたい人は下記の本がお勧めです。(詳細は画像をクリック)



オンラインプログラミングスクール
未来エンジニア養成所Logo