引用使用 `:/` 语法指定的提交之前的提交?
Referring to the commit prior to a commit specified using `:/` syntax?
提交消息包含 "foo" 的最新提交拼写为 :/foo
,如:
git show :/foo
如何引用该提交的父项? :/foo^
不正确;结果是:
fatal: ambiguous argument ':/foo^': unknown revision or path not in the working tree.
到目前为止我唯一能想到的就是使用 git rev-parse
:
的输出
git show $(git rev-parse :/foo)^
...这有效,但似乎不必要地复杂。
如果 :/foo
找到 HEAD:^{/foo}
,您可以将尾部 ^
作为 HEAD:^{/foo}^
放入第二个语法中。如果它找到 xyz:^{/foo}
,您可以用这种方式放置结尾的 ^
。但由于它可能会找到其中任何一个或其他类似的字符串,因此没有您想要的单步语法。
两步语法是各种 Git 脚本中实际使用的语法,尽管通常它被编码为:
hash=$(git rev-parse "$usersupplied") || exit
hash=$(git rev-parse $hash^) || exit
以便更好地处理错误。
提交消息包含 "foo" 的最新提交拼写为 :/foo
,如:
git show :/foo
如何引用该提交的父项? :/foo^
不正确;结果是:
fatal: ambiguous argument ':/foo^': unknown revision or path not in the working tree.
到目前为止我唯一能想到的就是使用 git rev-parse
:
git show $(git rev-parse :/foo)^
...这有效,但似乎不必要地复杂。
如果 :/foo
找到 HEAD:^{/foo}
,您可以将尾部 ^
作为 HEAD:^{/foo}^
放入第二个语法中。如果它找到 xyz:^{/foo}
,您可以用这种方式放置结尾的 ^
。但由于它可能会找到其中任何一个或其他类似的字符串,因此没有您想要的单步语法。
两步语法是各种 Git 脚本中实际使用的语法,尽管通常它被编码为:
hash=$(git rev-parse "$usersupplied") || exit
hash=$(git rev-parse $hash^) || exit
以便更好地处理错误。