7

HEADGit の用語では、「切り離された HEAD」は、シンボリック参照がどのブランチも指していない状態に対応することを知っています。git branchまた、たとえば、私が切り離されたHEAD状態にあるかどうかを教えてくれることも知っています。

* (detached from 9a2ef02)
  master

かどうか、例えば

* master

ただし、切り離されたHEAD状態にあるかどうかについて、出力をgit log --decorate完全に明確にする方法があるかどうかを知りたいです。これは、「明確な」とはどういう意味かを説明する例です。

ここに画像の説明を入力

私がオンだとするmasterと、私の履歴は次のようになります。

4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README

ケース 1: 明白な切り離された HEAD 状態

私が走れば

git checkout 9a2ef02

の出力git log --decorate --oneline

9a2ef02 (HEAD) Correct typo in header
f0badb5 Add to-do section to README

この出力の横にブランチ参照がリストされていないためHEAD、切り離された HEAD があることは確かです。

ケース 2: HEAD が切り離された状態かどうか

ただし、実行すると

git checkout 4d860e9

thenHEADは を指すのではなくmaster、commit を直接4d860e9指します。これmasterもまた指します。私は切り離されたHEADを持っています。ただし、 の出力から判断する方法はありませんgit log --decorate --oneline

4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README

の時と全く同じだからmaster

いくつかのオプションを介してgit log、そのあいまいさを取り除く方法はありますか? git-logマニュアルページで方法が見つかりませんでした...

4

2 に答える 2

4

Git 2.4+ (2015 年第 2 四半期) では、git log --decorateHEAD に関連付けられた正確なブランチ (または切り離された HEAD の場合はその欠如) が表示されます。

Junio C Hamano ( )によるコミット 51ff0f2を参照してください。gitster

logHEAD:ブランチ名で飾る

現在、ログの装飾は、どのブランチがチェックアウトされているか、およびHEADデタッチされているかどうかを示しません。

ブランチfooがチェックアウトされるHEAD, fooと、装飾の " " 部分が" " に変更されますHEAD -> foo。これは、ref の装飾 (間隔によって助けられる) とそれらの関係の両方を示すのに役立ちます。

結果として、 " HEAD" なしの " ->" は切り離されたHEADnowを示します。


これは、2.4 リリース ノートに次の下位互換性に関する警告が含まれるようになったことを意味します。

git log --decorate" " (およびコマンド テイク%dの userformat--format=<string>パラメータ " " ファミリーで使用される " " フォーマット指定子)からの出力は、ブランチ名の他のヒントと同様に、カンマで区切られたgit log" " をリストするために使用されます。HEAD例えば

$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD, master)
...

このリリースでは、HEAD がブランチの先端を参照し、その名前が出力にも表示されている場合に、出力がわずかに更新されます。
上記は次のように示されます。

$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD -> master)
...
于 2015-03-23T09:50:15.900 に答える
2

[編集: Git 2.4 以降、VonC の回答を参照してください。以下のテキストは、 2.4より前のバージョンの Git 用です。]

残念だけど違う。git logが私の構文を--decorate使用することを望み続けています。HEAD=もしそうなら、あなたは得るでしょう:

4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README

頭を腕の下に抱えているとき:


(ソース: Shutterstock.com )

しかし、代わりにこれを取得します:

4d860e9 (HEAD=master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README

ハロウィンモードでないとき。

于 2014-08-19T21:08:16.580 に答える