この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:9
更新日時:2026-06-11 07:07:02
タイトル: 用語一覧
SEOタイトル: git 用語一覧完全リファレンス(Repository / HEAD / Branch / Rebase / Stash 他)
| この記事の要点 |
- Repository = リポジトリ。Git の管理単位。
.git/ ディレクトリにすべて入っている - HEAD = 現在チェックアウトしているコミットへのポインタ。通常はブランチ名を指す
- Index (Staging) = コミット予定の変更を貯める中間領域。
git add で入る - Origin = clone 元リモートの慣習名。Upstream = フォーク元 or 追跡先
- Rebase ≠ Merge: rebase は履歴を線形に書き直す、merge はマージコミットを作る
|
Git 用語を理解する 3 つの軸
Git の用語は (1) 場所(リポジトリ / ワーキングツリー / インデックス)、(2) 状態を指すポインタ(HEAD / ブランチ / タグ)、(3) 操作(merge / rebase / fetch ...)の 3 軸で覚えると整理しやすくなります。
場所に関する用語
| 用語 | 意味 | 覚え方 |
| Repository (リポジトリ) | Git で管理する 1 プロジェクト分のデータ全体。コミット履歴、ブランチ、設定が .git/ 配下に | 「貯蔵庫」。git init で作る |
| Working Tree (ワーキングツリー) | 編集中のファイルが置かれている実際のディレクトリ | 「机の上」 |
| Index / Staging Area | コミット予定の変更を貯める領域。git add で追加、git commit で確定 | 「コミット直前の控え室」 |
| Bare Repository | ワーキングツリーを持たないリポジトリ。サーバ用 | GitHub のサーバ側はベアリポジトリ |
| Remote (リモート) | 外部に置かれたリポジトリ(GitHub 等)の URL の別名 | git remote -v で確認 |
コミットとポインタ
| 用語 | 意味 | 備考 |
| Commit (コミット) | ある時点のスナップショット + 親コミット + 作者 + メッセージ | SHA-1 ハッシュ(40 文字)で識別。先頭 7 文字で省略可 |
| SHA-1 Hash | コミット ID。例: 4f1e2a8b... | 内容で決まるので改ざん検知になる |
| HEAD | 現在チェックアウトしている地点へのポインタ | 通常はブランチ名を指す(シンボリック参照) |
| Detached HEAD | HEAD がブランチではなく特定コミットを直接指す状態 | そのままコミットすると孤立する |
| Branch (ブランチ) | 特定コミットを指す動くポインタ。新コミットで自動前進 | refs/heads/ |
| Tag (タグ) | 特定コミットを指す動かないポインタ。リリース版に | refs/tags/ |
| Annotated Tag | タグ自体に作者・日時・メッセージを持つタグ | git tag -a v1.0 -m "Release 1.0" |
| Lightweight Tag | 単なるコミットへのポインタ | git tag v1.0 |
リモート関連
| 用語 | 意味 |
| Origin | git clone したリモートの慣習名。リモート 1 個目のデフォルト名 |
| Upstream | 追跡対象のリモートブランチ、または OSS でフォーク元リポジトリ |
| Tracking Branch | リモートブランチを追跡するローカルブランチ(git branch -vv) |
| Remote-tracking Branch | リモートの状態を反映する読み取り専用ローカル参照(origin/main) |
| Refspec | ローカルとリモートの参照のマッピング指定。+refs/heads/*:refs/remotes/origin/* |
同期系の操作
| 用語 | 動作 |
| Clone | リモートを丸ごとローカルに複製 |
| Fetch | リモート最新を取得(ローカルブランチは未変更、origin/main 等が更新) |
| Pull | fetch + merge(または fetch + rebase)の合成コマンド |
| Push | ローカルのコミットをリモートへ送信 |
| Force Push | 履歴を上書きする push。--force-with-lease を推奨 |
履歴を統合する操作
| 用語 | 動作 | 履歴形 |
| Merge | 2 系列のブランチを統合。3-way マージ。マージコミットを作る | 分岐が残る |
| Fast-forward Merge | 分岐がなければ単にポインタを進めるだけ | 直線 |
| Rebase | ブランチのコミットを別の基点の上に積み直す | 直線化 |
Interactive Rebase (-i) | コミットを編集 / 順序入替 / squash | 整形済 |
| Cherry-pick | 特定のコミットだけ取ってきて適用 | 新コミット作成 |
| Squash | 複数コミットを 1 つに統合(rebase の -i 内で操作) | 1 コミット化 |
履歴を巻き戻す系
| 用語 | 動作 | 用途 |
| Reset | HEAD と(必要なら)インデックス・ワーキングツリーを過去のコミットに戻す | 「無かったことに」 |
| Revert | 指定コミットを打ち消す新しいコミットを作る | 履歴を残しつつ取り消し |
| Reflog | HEAD の動きを記録するログ。reset で失った変更も取り戻せる | git reflog |
| Checkout | ブランチ切替 or ファイル復元(Git 2.23+ は switch / restore 推奨) | 切替・復元 |
| Restore | checkout の「ファイル復元」専用版(Git 2.23+) | 明確な意図 |
| Switch | checkout の「ブランチ切替」専用版(Git 2.23+) | 明確な意図 |
差分系
| 用語 | 意味 |
| Diff | 差分。git diff でワーキングツリーとインデックスの差、--cached でインデックスと HEAD |
| Conflict (コンフリクト) | マージ時、同じ部分を両方が変更していたため自動統合できない状態 |
| Conflict Marker | <<<<<<< HEAD ... ======= ... >>>>>>> branch |
| Blame | 各行を誰がいつ変更したか表示(git blame ) |
退避・複数チェックアウト系
| 用語 | 意味 |
| Stash | 作業中の変更を一時退避(git stash で push、pop で復元) |
| Submodule | 別の Git リポジトリを自リポジトリに埋め込む。バージョンを固定追跡 |
| Worktree | 1 つのリポジトリから複数のワーキングツリーを切り出す(git worktree add) |
| Sparse Checkout | 巨大リポジトリで一部のディレクトリだけチェックアウト |
その他重要用語
| 用語 | 意味 |
| .gitignore | 追跡対象から除外するファイル / フォルダ |
| Hook | 特定タイミングで自動実行されるスクリプト(.git/hooks/) |
| Pull Request (PR) / Merge Request (MR) | GitHub / GitLab 上のレビュー & マージ依頼。Git 本体の機能ではない |
| Fork | GitHub 上で他人のリポジトリを自アカウントにコピーする操作。Git 本体の機能ではない |
| Pack File | 複数のオブジェクトを圧縮した .git/objects/pack/ のファイル |
| Object | Git の内部単位(blob / tree / commit / tag の 4 種) |
| Blob | ファイル内容のスナップショット |
| Tree | ディレクトリ構造を表現するオブジェクト |
コマンドと用語のマッピング
# Working Tree → Index に「ステージング」
git add file.txt
# Index → Repository に「コミット」
git commit -m "msg"
# Repository → Remote に「プッシュ」
git push origin main
# Remote → Repository に「フェッチ」
git fetch origin
# Remote → Repository → Working Tree に「プル」(fetch + merge)
git pull origin main
# 現在の状態を全部見る
git status # Working / Index / HEAD の差
git log # コミット履歴
git reflog # HEAD の動き履歴
git branch -vv # ブランチと追跡関係
覚えにくい用語のミニまとめ
- Origin と Upstream の違い: 単独リポジトリなら同じことが多い。フォーク開発では
origin = 自分のフォーク、upstream = 本家。
- Fetch vs Pull: fetch は取得だけで安全、pull は取得 + 統合。
- Reset vs Revert: reset は履歴を消す、revert は打ち消しコミットを足す(履歴を残す)。
- Merge vs Rebase: merge は履歴が分岐、rebase は履歴を直線化(プッシュ済を rebase してはいけない)。
- Tag vs Branch: branch は動く、tag は動かない(特定リリースの目印)。
FAQ
Q: Detached HEAD でコミットしてしまった、どう救う?
A: その場で git branch rescue でブランチを生やす。または git reflog でコミット SHA を確認し、新しいブランチを生やす。
Q: SHA-1 は衝突しない?
A: 理論上は衝突しうるが、Git は内容アドレスとして 160 ビット使うので実用的には衝突は無視可能。Linux Kernel / 大規模 OSS でも問題なく稼働。新規プロジェクトは SHA-256 サポートも始まっている。
Q: タグとブランチ、どちらでリリースを管理?
A: リリース版はタグ(動かない)、開発中はブランチ(動く)。v1.0.0 のような Semantic Versioning のタグが定石。