ぱそくま ろご
linux > Git > Gitの基礎

Gitの基礎

Gitのインストール

Gitはパッケージマネージャーを使ってインストールできます。

Gitのインストール - Debian系

[paso ~] sudo apt install git

Gitのインストール - redhat系

[paso ~] sudo yum install git


Gitでのファイルの状態

Gitではファイルの状態を4つに定義しています。これをしっかりと覚えないとGit用語に苦労します。

Gitのファイルの状態
名称 詳細
Untracked(追跡対象外) Gitのリポジトリ登録の対象となっていないファイルです。「git add」されていないか「gir rm」されたファイルです。
Unmodified 何も修正されていないファイルです。commit直後がこの状態です。
Modified リポジトリに登録されているファイルのうち、修正されたファイルです。
Staged ステージングされたファイルです。 ステージングとはUntrackedのファイルやModifiedしたファイルを「git add」をして、INDEX情報に登録された(追跡対象の)ものを指します。 ステージングされたファイルのみがcommitの対象となります。

コミット

Gitでコミットは複数の意味があり、1.Git履歴内のある1点で、SVNでいうリビジョンと同じ意味。2.「git commit」した時に生成されるコミットオブジェクト。になります。

コミットオブジェクト

「git commit」を実行すると、コミットオブジェクトとツリーオブジェクトとblobが作成されます。 コミットオブジェクトはメタデータの集まりで、「git commit」した時のコミット情報、自分のID、親のコミットオブジェクトID、自身のツリーオブジェクトの情報を持っています。

ブランチの実装 - ref

Gitではrefという機能を使ってブランチを実装しています。 refとはオブジェクトを参照するポインタのようなもので、他にも「タグ」などで使用されています。 refはローカルリポジトリに保存されています。

例:ブランチのrefの確認

[paso ~] git log
commit cbbacd1ddcaaxxxxxxxxxxxxxxxxxxxxxxxxxxxx #最新のコミットオブジェクトのID
Author: dev2 <dev2@pasokuma.xx>
Date:   Wed Dec 3 15:09:34 2016 +0900

    3rd commit

commit e559e60bf725xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Author: paso <paso@pasokuma.xx>
Date:   Wed Dec 2 14:54:06 2016 +0900

    2nd commit

commit c351c2e0978xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Author: paso <paso@pasokuma.xx>
Date:   Thu Dec 1 18:15:14 2016 +0900

    1st commit
[paso ~] git show-ref
#コミットオブジェクトのIDがrefに使われている
cbbacd1ddcaaxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/master
cbbacd1ddcaaxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/remotes/origin/HEAD
cbbacd1ddcaaxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/remotes/origin/master

Gitのブランチ
名称 詳細
マスタ
(master)
git init時に作成されるブランチのデフォルト名。なので、特に特別なものではありません。
上流ブランチ
(upstream)
マージ(もしくはリベース)を行うデフォルトのブランチです。大抵はリモートリポジトリにあります。
リモート追跡ブランチ
(remote-tracking)
他のリポジトリ(=リモートリポジトリ)にあるブランチからの変更点を保存しているrefの1つ。 よく使われるのがorigin/masterです。
HEAD 現在のブランチです。 HEAD~は現在のブランチの1つ前にコミットされたもの。 ~は複数書くことや数字で書くことがが可能で、例えばHEAD~~~またはHEAD~3は3つ前のコミットされたものになります。