Git バージョン 1.8.5 の時点で@
、先頭のブランチ/参照名と and のような序数のサフィックスのないアット{n}
マークは、特別な Git 参照の同義語/エイリアス/ショートカットにすぎません。HEAD@{1}
master@{1}
HEAD
4 つの大文字 "HEAD" を入力する代わりに、"@" と入力できます (例: "git log @")。
したがって、これらのコマンドについては
git rebase -i @~4
git log @^^..@
最初に出現した@
with HEAD
(またはhead
Windows または OS X を使用している場合)を単純に置き換えることができます。
git rebase -i HEAD~4
git log HEAD^^..HEAD
では、どういうHEAD
意味ですか?Git リビジョンを指定するための公式の Linux Kernel Git ドキュメントで説明されているHEAD
ように、現在作業コピー (または Git 用語では「作業ツリー」) としてチェックアウトしているコミットの特別なショートカット リファレンスです。
HEAD は、作業ツリーの変更に基づいたコミットに名前を付けます。
HEAD
特別な参照が何を意味するかについて、これらの他の Stack Overflow の質問を読むこともできます。
- Git の HEAD および ORIG_HEAD。
- 正確には git HEAD とは何ですか? .
VonC は、このスタック オーバーフローの回答 (一番下の最後のセクション) で@
ショートカットとして選択された理由に関する興味深い情報も見つけました。head
Git でよくあるように、 while@
は便利なショートカットですが、常にの有効な置き換えになるとは限りませんHEAD
。例:
$ git bundle create temp.bundle @
Enumerating objects: 25, done.
Counting objects: 100% (25/25), done.
Compressing objects: 100% (20/20), done.
Total 25 (delta 3), reused 0 (delta 0), pack-reused 0
$ git bundle list-heads temp.bundle
c006e049da432677d1a27f0eba661671e0524710 refs/heads/master
$ git bundle create temp.bundle HEAD
Enumerating objects: 25, done.
Counting objects: 100% (25/25), done.
Compressing objects: 100% (20/20), done.
Total 25 (delta 3), reused 0 (delta 0), pack-reused 0
$ git bundle list-heads temp.bundle
c006e049da432677d1a27f0eba661671e0524710 HEAD
この場合、 usingは forではなく (たまたま指していたブランチ)@
の置き換えに似ています。後で結果のバンドルから取得しようとする場合、取得する参照を指定する必要があります (を使用した場合) 。明示的に指定した場合は、その必要はありません。master
HEAD
HEAD
master
@
HEAD