5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

gitのコマンドの動作について内部動作まで理解しよう!って記事です。

はじめに以下の記事を読んでいただくと理解が深まると思います。

今回のコマンド

  • add
  • commit
  • push
  • pull
  • fetch
  • branch

git add

内部動作

1. ファイルの内容からハッシュ値を計算

  • ファイルの内容やヘッダー情報に基づいて、SHA-1ハッシュ値を生成

2. .git/objects/ディレクトリblobオブジェクトを作成

  • 計算されたハッシュ値を基にファイルを作成しオブジェクトを保存

3. インデックスファイル(.git/index)を更新

  • ステージングエリアの状態を記録
  • ファイルのパス、モード、blobオブジェクトへの参照を保存

図解

git commit

内部動作

1. ツリーオブジェクトの作成

  • コミット時、Gitはステージングエリア(インデックス)の内容から、ディレクトリ構造を表現するtreeオブジェクトを作成

2. コミットオブジェクトの生成

  • コミットメッセージ、作成者情報、タイムスタンプ、親コミットへの参照を含むcommitオブジェクトを作成
  • 最新のコミットのハッシュ値を.git/HEADに保存

3. ブランチポインターの更新

  • 現在のブランチ(例:main)のポインターを、新しいコミットオブジェクトに更新

図解

git push

内部動作

1. ローカルブランチの変更を検出

  • ローカルリポジトリの最新のコミットを特定
  • リモートリポジトリとの差分を確認

2. オブジェクトの転送

  • ローカルにある未送信のコミット、ツリー、blobオブジェクトをリモートリポジトリに転送
  • パックファイル(圧縮されたオブジェクト群)を作成して効率的に転送

3. 参照の更新

  • リモートブランチの参照(ref)を更新
  • .git/refs/remotes/配下のファイルを更新

図解

git pull

内部動作

1. リモートリポジトリの変更をフェッチ

  • リモートリポジトリの最新の変更を取得
  • git fetch相当の処理を実行

2. マージの実行

  • ローカルブランチとリモートブランチの差分を自動的にマージ
  • 競合がある場合は手動での解決が必要

3. ワーキングディレクトリの更新

  • マージ結果をワーキングディレクトリに適用
  • インデックスファイルを更新

図解

git fetch

内部動作

1. リモートリポジトリの変更をダウンロード

  • リモートリポジトリの最新のオブジェクトとref情報を取得
  • ローカルリポジトリのオブジェクトデータベースを更新

2. リモート追跡ブランチの更新

  • origin/mainのような追跡ブランチを更新
  • ローカルブランチは変更しない

3. パックファイルの処理

  • 効率的なデータ転送のためパックファイルをダウンロード
  • オブジェクトを展開し、ローカルリポジトリに保存

図解

git branch

内部動作

1. ブランチ情報の管理

  • .git/refs/heads/ディレクトリ配下にブランチ情報を保存
  • 各ブランチファイルには、そのブランチの最新コミットのハッシュ値が記録される

2. ブランチ作成

  • 現在のHEADが指すコミットを参照点としてブランチを作成
  • 新しいブランチファイルを作成し、同じコミットハッシュ値を設定

3. ブランチリスト表示

  • .git/refs/heads/配下のファイルを読み取り、ブランチ一覧を表示

図解

まとめ

今回はGitの基本的なコマンドがどのようになっているかをまとめてみました。今後も他のコマンドについてまとめる予定です。
Gitの理解に少しでも貢献できると幸いです。

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?