git修订版格式refname @ {n}和rev~n之间有什么区别

时间:2013-11-10 20:02:23

标签: git

手册页的区别如下

引用man gitrevisions ...

  

例如,master @ {1}是master的前一个值   master @ {5}是master的第5个先前值。

  

后缀〜< n> to revision参数表示提交对象   第一代命名提交对象的祖父,   只跟随第一个父母。

结束语

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

master @ {n}与master~n?

相同

如果这是一个经常被问到的问题,请道歉,但这很难谷歌。

1 个答案:

答案 0 :(得分:3)

不,他们不一样。要了解原因,您必须了解 reflog 。将reflog视为一个巨大的日志表,其中包含您的存储库中的分支用于指向的所有提交(如果您愿意,则为“之前的值”)。

这就是the reflog,它允许你回到分支的过去值。 master@{5}是大师过去常常指出的5个事件(无论这些事件是你提交的还是重置的,等等。)

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