Gitコマンド入門::Gitオブジェクト(symbolic-ref)第五十五回

2 min read読了の目安(約1900字

みなさんこんにちは! 今回もGit本家のサイトを参考にして進めていきますね。
今回は、symbolic-ref コマンドで、HEADの切り替え操作です。

前回、第五十四回の記事はこちらから!

https://zenn.dev/shiozumi/articles/1b64fe7a7446e0

git本家本元の情報はこちらから!

https://git-scm.com/book/ja/v2

今日の課題も前回同様、ここを参考にしています!

https://git-scm.com/book/ja/v2/Gitの内側-Gitの参照

10.3 Gitの内側 - Gitの参照

Gitの参照の真ん中あたり、HEADの解説箇所です!

git symbolic-ref HEAD

$ git symbolic-ref HEAD
refs/heads/master
// HEADファイルの中身です!

$ cat .git/HEAD
ref: refs/heads/master
// cat コマンドでも、勿論、同じように確認できますね。

$ cat .git/refs/heads/master
1e3f4892a273326780b4fb8b44a5b76469b5ffa2
// 最新のコミットしたハッシュ値が入ってます!

$ git log --oneline
1e3f489 (HEAD -> master, origin/master, test) third commit
514ff38 second commit
8cab88d first commit

まずは、基本中の基本ですけど、HEADが指すファイルの中には、一番最新のコミットのハッシュ値が入っていますね。

git checkout -b test

$ git checkout -b test
// 既に、ローカルtestブランチがある方は、git switch test

$ git symbolic-ref HEAD
refs/heads/test
// 今度は、HEADの中身が、refs/heads/testになりましたね。

$ cat .git/refs/heads/test
1e3f4892a273326780b4fb8b44a5b76469b5ffa2

git symbolic-ref HEAD refs/heads/master

$ git symbolic-ref HEAD refs/heads/master

[shiozumi@ovs-009 func0054]$ git branch -avv
* master                1e3f489 [origin/master] third commit <!-- 選択!
  test                  1e3f489 third commit
  remotes/origin/master 1e3f489 third commit

// ブランチが、test から、master に切り替わりましたね!

$ git symbolic-ref HEAD refs/heads/test
[shiozumi@ovs-009 func0054]$ git branch -avv
  master                1e3f489 [origin/master] third commit
* test                  1e3f489 third commit  <!-- 選択!
  remotes/origin/master 1e3f489 third commit

// ブランチが、master から、test に切り替わりましたね!

git switch と同じ動作をするんですね。

そして、.git/HEAD ファイルを常にベースとしながら、gitコマンドも動作しています。ただただ、それだけの事ですけど、HEADは、とても重要な物ですから、この機会に更に理解を深めて置きましょう。

それでは、今回はここまで、お疲れ様でした!

https://zenn.dev/shiozumi/articles/53c02817b72faa
https://twitter.com/esmile2013