./gitの構成
.
├── COMMIT_EDITMSG
├── HEAD
├── config
├── description
├── hooks
├── index
├── info
├── logs
│ ├── HEAD
│ └── refs
│ └── heads
│ ├── master
│ └── test
├── objects
│ ├── 1e
│ │ └── asdfa887932510deeecdfa800000082341743a
.
.
.
│ ├── fa
│ │ └── cad48f0ac69f851bsdb8aefcc81234asba1782
│ ├── a8
│ │ └── 8d8325673948adacefdab7485f0c5b80f01112
│ ├── info
│ └── pack
├── packed-refs
└── refs
├── heads
│ ├── master
│ └── test
└── tags
オブジェクトのタイプを見る
$ git cat-file -t faca
tree
オブジェクトの内容を見る
$ git cat-file -p faca
100644 blob 8d8325673948adacefdab7485f0c5b80f01112 memo1.txt
オブジェクトの種類
- commit コミット情報(日時、著者、コメント)
- tree すべてのファイル名とその種類
- blob ファイルの中身
git addするとどうなるか
- index上ではtreeが作られる
git ls-files --stage
- blobが作られる
変更管理の仕組み
cat .git/logs/refs/heads/master (masterブランチ)
cat .git/logs/refs/heads/test(testブランチ)
- コミットはparentのコミットハッシュを持っている(コミットリレー)
マージには2種類ある
- マージをするときに元のブランチの最後のコミットからブランチを切っていた場合はマージコミットが作られない。Fast Forwardマージと呼ぶ。
- マージをするときにブランチを切ったコミットより後にコミットが作られていた場合、マージコミットが作られる。Non-Fast Forwardマージと呼ぶ。マージコミットはparentのコミットハッシュを2つ持つ。