LoginSignup
0
1

More than 3 years have passed since last update.

Gitの内部の動きを知ろう ~その4~

Posted at

目次

今回の確認内容

ブランチを作ってチェックアウトします。

git branch

以下のコマンドを実行し、最新のコミットからブランチを作ります。

$ git branch
* master
$ git branch bra20200226
$ git branch
  bra20200226
* master

チェックアウトはしていないので、まだMasterを参照しています。このときに.git配下がどのように変わったかを見てみます。

$ tree -a
├── .git
│   ├── logs
│   │   ├── HEAD
│   │   └── refs
│   │       └── heads
│   │           ├── bra20200226
│   └── refs
│       ├── heads
│       │   ├── bra20200226

logsとrefs配下にブランチが作られました。作られたファイルの中身を見てみると、以下のように最新のコミットから作られたことがわかります。

$ cat .git/logs/refs/heads/bra20200226
0000000000000000000000000000000000000000 2deb1b0751cbfeffdc75683b2f61e476ef970640 Chapa <hoge@hoge.com> 1582664128 +0900                                    branch: Created from master
$ cat .git/refs/heads/bra20200226
2deb1b0751cbfeffdc75683b2f61e476ef970640
$ git cat-file -p 2deb1b0751cbfeffdc75683b2f61e476ef970640
tree e6c5d9e73c33771f1878aa6edc1a5df1939e6351
parent 17e88b45fdb1b3e8831df0c209204f290d6ca614
author Chapa <hoge@hoge.com> 1581171878 +0900
committer Chapa <hoge@hoge.com> 1581171878 +0900

2nd commit. add and modify

git checkout

では、チェックアウトして、.git配下がどのように変わったかを見てみます。

$ git checkout bra20200226
Switched to branch 'bra20200226'
$ git branch
* bra20200226
  master
├── .git
│   ├── HEAD
│   ├── index
│   ├── logs
│   │   ├── HEAD

それぞれの中身を見ると以下のようになっています。

$ cat .git/HEAD
ref: refs/heads/bra20200226
$ cat .git/refs/heads/bra20200226
2deb1b0751cbfeffdc75683b2f61e476ef970640
$ cat .git/logs/HEAD
0000000000000000000000000000000000000000 17e88b45fdb1b3e8831df0c209204f290d6ca614 Chapa <hoge@hoge.com> 1580696403 +0900                                    commit (initial): first commit
17e88b45fdb1b3e8831df0c209204f290d6ca614 2deb1b0751cbfeffdc75683b2f61e476ef970640 Chapa <hoge@hoge.com> 1581171878 +0900                                    commit: 2nd commit. add and modify
2deb1b0751cbfeffdc75683b2f61e476ef970640 2deb1b0751cbfeffdc75683b2f61e476ef970640 Chapa <hoge@hoge.com> 1582664726 +0900                                    checkout: moving from master to bra20200226

HEADの参照ブランチが変わりました。参照ディレクトリを見るとどのコミットを参照しているかがわかります。

今回のおさらい

ブランチを作るとオブジェクトとして何かが作られるわけではなく、参照ディレクトリ配下にファイルが作られていきました。チェックアウトすることでHEADの参照先が変わることも確認できました。

次回はブランチでコミットを進めたときにどのように変化していくかを追っていきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1