1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Gitの中身を調べたら理解に役立った

Posted at

概要

Gitの中身を知ることで、どこに対する操作なのかを意識しやすくなります。
今回はできるだけ短く要点だけまとめます。

Gitのデータ管理

ローカルでは3つのエリアに分かれています。それぞれ紹介します。

ワークツリー
ファイルを変更する作業場。普段私たちがコードをいじる場所ですね。

ステージ
git addをした時にステージに追加されます。コミットをする準備をします

リポジトリ
git commitをした時にリポジトリに追加されます。ここではスナップショットを記録します

20200911144527.png
引用: https://phoeducation.work/entry/2020/09/11/144733

Gitコマンドについて

コマンド やっていること 説明
git init .gitディレクトリを作成 Gitに関する全ての関連情報が作成される。
git add blobオブジェクトの作成 圧縮ファイルを作成。ハッシュ値を付与する
git commit treeオブジェクトの作成 圧縮ファイルのハッシュ値に対応するファイル名を付与する
git commit commitオブジェクトの作成 treeオブジェクトを使用して様々な情報を作成する

代表的なコマンドを3つピックアップしました。
「やっていること」について説明していきます。

git add

上記の前提知識をもとに説明していきます。
例えば、index.htmlファイルを作成した場合を例に考えます。まず、リポジトリに圧縮ファイルAというファイルが作成されます。その後、圧縮ファイルをハッシュ化したものをindex.htmlとマッピングしたものをステージングで保持します。これがgit addです。そしてこれがblobオブジェクトと呼ばれます。

スクリーンショット 2023-07-30 23.07.33.png

git commit

git commitでは2つのことをしています
①ツリーオブジェクトの作成
blobオブジェクトにはもともとのファイル名情報が残っていません。全てハッシュ化されています。ここではファイル名とファイルの中身を組み合わせることでツリーオブジェクトを作成します。ツリーオブジェクトはディレクトリの一つの階層ごとに一つのツリーファイルになっていて、ツリーファイルには圧縮ファイルだけでなくツリーファイルも保存されています。

②コミットオブジェクトの作成
コミットオブジェクトでは以下のような情報を持ったコミットオブジェクトを作成します

・ハッシュ値
 ①で作成した変更情報がハッシュ値として設定されます

・作成者
 このコミットをした本人のアカウント名

・親コミット
 直前のコミットを記録します。(一個前のコミット)

・日付
 コミットした日付を記録

・コミットメッセージ
 そのままの意味。変更箇所などを書くことが多い
スクリーンショット 2023-07-30 23.15.56.png

まとめ

Gitは3つのことをやっている

  • 変更ファイルを圧縮する
  • 圧縮ファイルと変更ファイルを関連付ける
  • 変更情報が記載されたコミットファイルを作成する

Gitのコマンドは基本的に上記3つの動きに対しての操作となるので
どのフェーズに対しての操作か意識すると理解が深まると思う。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?