簡體   English   中英

為什么“git cat-file -p HEAD^2”失敗?

[英]Why does "git cat-file -p HEAD^2" fail?

“git cat-file -p HEAD^2”給了我以下錯誤:

fatal: Not a valid object name HEAD^2

但是,使用“〜”格式,它可以工作:

$ git cat-file -p HEAD~2

gitrevision 手冊頁說明如下:

... 修訂版參數的后綴 ^ 表示該提交對象的第一個父級。 rev^n 表示第 n 個父級(即 rev^ 相當於 rev^1)

我誤解了什么?

您在 Windows 上有類似的錯誤消息(在 CMD 會話中,而不是在 git-bash 會話中)。
您需要使用^轉義^

git cat-file -p HEAD^^2

但這不會起作用,除非 HEAD 有兩個父級(意思是合並的結果),這里似乎就是這種情況。

例如:

C:\Users\vonc\prog\git\git>gl
*   74a844a - (HEAD -> master) Merge branch 'rj/mailmap-ramsay' (6 days ago) <Junio C Hamano>
|\
| * dafc047 - mailmap: update my entry with new email address (11 days ago) <Ramsay Jones>
* |   b6bd2d0 - Merge branch 'bn/send-email-smtp-auth-error-message-fix' (6 days ago) <Junio C Hamano>

這給出了:

C:\Users\vonc\prog\git\git>git cat-file -p @^2
fatal: Not a valid object name @2

C:\Users\vonc\prog\git\git>git cat-file -p @^^2
tree c78343c7a98b4cb8a455d73aeecaa8acfa2cb30e
parent f4d9753a89bf04011c00e943d85211906e86a0f6
author Ramsay Jones <ramsay@ramsayjones.plus.com> 1441122606 +0100
committer Junio C Hamano <gitster@pobox.com> 1442419728 -0700

由於您的錯誤消息是Not a valid object name HEAD^2 ,而不是Not a valid object name @2 ,這意味着 HEAD 只有一個父級。


HEAD~2”對我有用。“HEAD^n”不等於“HEAD~n”嗎?

不:

HEAD~HEAD^是等價的。
當您指定一個數字時,差異就會變得明顯。
HEAD~2意思是“第一個父母的第一個父母”或“祖父母”

X--x--x
     /
    Y

@~2X ,而@^2Y

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM