GitのコミットはSHA1で識別されますが、それをいちいち指定してるとやってられないので、なんかそれっぽい名前で代用できたりします。よく使われるのはブランチ名(master とか)やタグ名で、他にはHEADとかその辺の特殊なアレもありますね。この辺はブランチ名に対するショートカットくらいに捉えとくのがわかりよいと思います。
で、これらは所詮、一つのコミットにしか対応しないので、そこから辿って……となると相対的な指定の方法が必要になります。それが ~ と ^ です。記号なんでわかりにくいと感じるかもしれませんが、覚えてしまえば簡単です。覚えてしまえば。……覚えれるものだろうか?
とりあえず「マージしなければ ~ だけでおk」と開き直る事は出来ます。マージしないGitとはなんなのか。なんなんだろう。知らない。たぶんGit的な何かだとは思う。
とりあえず記号の後ろに量指定的な事が出来ます。で、1は省略出来ます。 ~は重ねても数字で指定しても同じです。^は重ねるのと数字で指定するので意味が変わります。ここはテストに出ます。
無理矢理日本語で説明すると世代と親になるかなぁ……。
- ~ は世代
- A~ で Aの一世代前
- A~~ で Aの一世代前の一世代前
- A~3 で Aの三世代前
- ^ は番目の親
- A^ で Aの一番目の親
- A^^ で Aの一番目の親の一番目の親
- A^3 で Aの三番目の親
図にある HEAD^3^^2 は HEADの【三番目の親】の【一番目の親】の【二番目の親】になる。うん……わからない。
だそく
- きょんさんがGraphVizを教えてくれたので、何となく書いてみたのがこのエントリです。
- zsh触りはじめたところですが、さっそくgitの^が使えなくてハマったりなんか、してません。ええ。