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

リベース。親(枝分かれするコミットオブジェクト)の付け替え。指定されたブランチの最新情報を取り込み、カレントブランチの履歴上にある、(枝分かれしてから最新のものまで)すべてのコミットを作り直す。

 

Git 共有リポジトリを作成する

usage

git init --bare --shared [direcotry]

--bare

bare リポジトリを作成する。履歴情報のみ。ワーキングツリーを持たない。

--shared

ディレクトリのアクセス権限を指定する。デフォルトは group(true) で "g+sx" になるっぽい。1つのアカウントで利用する分には不要だと思う。

direcory

ディレクトリを指定する。デフォルトはカレントディレクトリ。ディレクトリが存在しなければ新規作成する。

ターミナルの記録をとる

ターミナルで実行したコマンドラインとその標準出力をファイルに書き出す

script [file]

exit でファイル出力を終了する

出力されたファイルには制御文字が含まれてるのでそのままだと読みづらい

なにかしらの置換処理で除去するか、less -r で表示するとよさそう