(サイドノート:--source
は、いくつかは、最初に到達したコミットが、そこから「ソース」の参照を追加し、git log
出力に)
[時々、タグは完全修飾されています。]なぜこれがオフにできますか?
すべてのGitのリファレンスは、1つの大きなネームスペースを共有しています。特殊ケース(HEAD
、MERGE_HEAD
、ORIG_HEAD
、など)を除いて、すべてが最上位ディレクトリ refs/
の下に存在します。次のレベルでは、参照のタイプが決まります。refs/heads/
にはブランチ名、refs/remotes/
にはリモート追跡ブランチ、refs/tags/
にはタグが含まれています。 (git stash
のために、単にファイルではなくディレクトリである、そこノートrefs/notes/
もあり、refs/stash
。)
--branches=<pattern>
、--glob=<pattern>
、--remotes=<pattern>
、または--tags=<pattern>
を使用している場合、あなたは完全な名前を見羽目になる。ある意味では、は--tags
(または--branches
または--remotes
; --glob
の同等物はありません)を使用するとが発生しないことが分かります。その理由は、it's an implementation quirkです。リンクされたコードを調べると、(ハイライトされたセクションの下部にある)バリアントがrefs/tags/
からfor_each_glob_ref_in
に明示的に渡され、--tags
(上端)のバリアントは明示的に渡されません。
実際には、同じコードパターンを持つ2つのソースファイルがあります。奇妙なのは、実際にはbuiltin/rev-parse.c
の方がはっきりとはっきりしていますが、git log
の注釈はrevision.c
のコードによるものです。
ソースでハードコードされているため、答えはいいえ、無効にすることはできません。事実の後でしか変更できません。
あなたが--source --branches --tags
を使用して、あなたがrefs/heads/blergh
とrefs/tags/blergh
として -suchに一致するブランチとタグの名前を持っている - そしてあなたが見る場合ことに注意してください:
f0b2db2 blergh do something or other
blergh
はブランチ名であれば、あなたが言うことができません、またはタグ名。参考文献、すなわち、をパックさ
に格納されていますが、この "ディレクトリ"の概念は概念的なものですが、もともとはまだ参照が解凍されている現在でもディレクトリです。.git
ディレクトリを見ると、refs/heads/
などが含まれていますrefs/
。
これは一般的には悪い考えです。それはすべてルールに従って動作しますが、ルールは混乱する可能性があります。特に、gitrevisions
は、タグが最初に来て、ほとんどのGitコマンド(git show
など)と同じですが、git checkout
は一致せず、タグではなくブランチをチェックアウトします(タグをチェックアウトするには、 refs/tags/blergh
を書きますが、git checkout refs/heads/blergh
を実行すると、分離したHEADが得られます)。同じ名前のブランチとタグを作ってしまったのを見つけたら、それをやり直してください。 :-)
'| sed '= \ trefs/tags/= \ t =' ' – choroba
ありがとうございます@チョロバ:)私はすでに対処するために私のプログラムを修正しましたが、これは奇妙なようです! –