Git 用語まとめ
なんとなくわかったこと。(勘違いや間違いを含む可能性アリ)
図も描いてみたかったけど時間かかるしやめた。
repository
リポジトリ。履歴情報。コミットオブジェクト、ブランチやタグの情報など。または、ワーキングツリーを含む Git 管理下のディレクトリを指す。
bare repository
ベアリポジトリ。ワーキングツリーをもたない。git init で指定されたディレクトリ直下に履歴情報が配置される。bare は「裸の」という意味。
non-bare repository
ワーキングツリーをもつリポジトリ。git init で指定されたディレクトリがワーキングツリーとなる。同時に .git ディレクトリが作成され、履歴情報、インデックスなどの Git 管理ファイルが配置される。
working tree
ワーキングツリー。ワーキングディレクトリ。ユーザーの作業領域。
index
インデックス。ステージングエリアとも呼ばれる。コミット対象のファイルを管理する。
staging
ステージング。コミット対象のファイルをインデックスに登録すること。Git コマンドは "add"。
commit
コミット。インデックスに登録された情報をもとにワーキングツリーのスナップショットを作成し、リポジトリに登録する。
commit object
コミットオブジェクト。コミット時点でのワーキングツリーのスナップショットの先頭データ。曖昧だがスナップショット全体を示すこともある。
スナップショットのデータ構造は commit -> tree (ディレクトリ構造) -> tree or blob (ファイルデータ) となっている。コミットオブジェクトは、ツリーオブジェクト、親コミットオブジェクト、作者、作成日時、コミッター、コミット日時、コミットコメントの情報をもつ。
author
最初にコミットした人。通常はファイルを修正した人。通常の commit --amend や rebase では変わらない。
committer
最後にコミットした人。commit --amend や rebase をしたら変わる。
branch
ブランチ。直訳すると「枝」。履歴ツリーの枝をイメージした言葉だと思うが、実態は履歴上にある最新のコミットを示すタグのようなものだと考えるとしっくりくる。履歴が枝分かれする(複数のコミットオブジェクトが同じ親を示す)と複数のブランチが存在することになる。
remote-tracking branch
リモート追跡ブランチ。リモートブランチの追跡ブランチ。ローカルに存在するリモートブランチのコピー。fetch するとリモートブランチの最新情報を取得し、リモート追跡ブランチが更新される。
remote repository
リモートリポジトリ。push & fetch の対象となる別のリポジトリ。だいたいは共有リポジトリ。git remote -v で確認できる。通常は origin に clone もとのリポジトリが設定される。
local repository
merge
マージ。現在のブランチに、別のブランチとの差分を取り込む。
fast-forward ではない場合、または --no-ff オプションが指定された場合は、別のブランチとの差分を取り込みマージコミットを作成する。
fast-forward merge
ファストフォワードマージ。現在のブランチが指定されたブランチの履歴の途中にあり、まだ枝分かれしていない場合、現在のブランチを指定されたブランチと同じコミットに移動させる。マージコミットは作成されない。
rebase
リベース。親(枝分かれするコミットオブジェクト)の付け替え。指定されたブランチの最新情報を取り込み、カレントブランチの履歴上にある、(枝分かれしてから最新のものまで)すべてのコミットを作り直す。