3

手册页做了如下区分

引用 man gitrevisions ...

例如,master@{1} 是 master 的直接优先值,而 master@{5} 是 master 的第 5 个优先值。

修订参数的后缀 ~<n> 表示提交对象,它是命名提交对象的第 <n> 代祖父母,仅在第一个父母之后。

结束报价

我知道这些单独格式的概括会导致不同的使用模式,但术语的差异(例如“先验值”与“祖父”)让我认为可能存在一些差异。

master@{n} 和 master~n 一样吗?

抱歉,如果这是一个常见问题,但这是很难用谷歌搜索的那种东西。

4

1 回答 1

3

不,它们不一样。要了解原因,您必须了解reflog。将 reflog 视为存储库中的分支曾经指向的所有提交的巨大日志表(“先验值”,如果您愿意的话)。

这就是reflog,它可以让你回到过去的分支值。 master@{5}是 master 在 5 个事件前曾经指出的(无论这些事件是您所做的提交还是 master 的重置等)

其他语法master^5andmaster~5更符合您的期望。这些处理 master 当前指向的提交的父母。

于 2013-11-10T20:23:37.897 回答