4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Git のシンボリック参照についてまとめ

Posted at

過去メモ整理中。多分内容は正しいはず。

[ 参考 ]
http://kozy4324.github.io/blog/2013/03/09/git-ref/
http://d.hatena.ne.jp/hokaccha/20120404/1333507076

GIT と ハッシュ

GITはリビジョン管理をコミットのハッシュ番号で整理します。

4dda3528d5765aae856f8158e14e6ee217f05e24

みたいなあれです。指定するときは長いので先頭7文字とかで使ったりします。

GITにはハッシュの他にも、シンボリック参照というのがあったりします。

bash
$ git log 4dda352   # 4dda352までのログを表示
$ git log HEAD   # HEADまでのログを表示
$ git log dev   # devブランチのログを表示

GITがシンボリック参照を追う流れ

GITは指定されたシンボリック参照に対して以下の順で追跡を行います。

  1. ファイル .git/ が存在すれば、そのファイルに書かれたハッシュ文字を利用する。
  2. ファイル refs/ が存在すれば、そのファイルに書かれたハッシュ文字を利用する。
  3. ファイル refs/tags/ が存在すれば、そのファイルに書かれたハッシュ文字を利用する。
  4. ファイル refs/heads/ が存在すれば、そのファイルに書かれたハッシュ文字を利用する。
  5. ファイル refs/remotes/ が存在すれば、そのファイルに書かれたハッシュ文字を利用する。
  6. ファイル refs/remotes//HEAD が存在すれば、そのファイルに書かれたハッシュ文字を利用する。

これらのファイルはGITでの諸操作の際に自動的に生成され、対応するハッシュ値が書き込まれます。

.git/

 主に以下の様なファイルが該当します。

  • HEAD
  • FETCH_HEAD
  • ORIG_HEAD
  • MERGE_HEAD
  • CHERRY_PICK_HEAD

自分で作成した場合には、そこに参照を維持することも可能です。

$ cp .git/HEAD .git/MY_HEAD
$ git log MY_HEAD

.git/refs/tags/

タグ作成で登録されるディレクトリ

.git/heads/

ブランチ作成で登録されるディレクトリ

.git/remotes/

リモート登録で登録されるディレクトリ

シンボリック参照の中身を確認する。

シンボリック参照がどのハッシュ値として解釈されるのかを確認する場合、
ファイルを探してcatする、という手もありますがrev-parseコマンドを使うと便利です。

$ git rev-parse master  # masterでの解釈
$ git rev-parse heads/master  # ブランチmasterの解釈
$ git rev-parse remotes/origin/master  # リモートoriginのmaster

例えばシンボリックのmasterは通常ブランチmasterを意味しますが、
masterという名前のタグを作成した場合、そちらの参照が優先される事になります。

参照が実際に何を指しているのかを確認する場合に、rev-parseは非常に役立ちます。

おわり

他にも参照名に^nなどとつけてn個前の参照をたどる、など、GITには色々と便利なシンボリック参照が用意されれいます。

もっと知りたい、という人は
https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html
あたりをご確認ください。

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?