【发布时间】:2013-04-10 08:27:14
【问题描述】:
我看到 git 命令使用 HEAD~ 之类的语法,但我在 Git Reference Manual 中找不到这种语法。
这是我的理解:<commit>~<n>指的是提交commit~ 只是表示相同,并且
现在,这是正确的吗?在那种情况下,这总是有效吗?如果 <commit>~ 将引用哪个提交呢?是否有一些相应的语法来引用下一次提交或稍后的提交
【问题讨论】:
我看到 git 命令使用 HEAD~ 之类的语法,但我在 Git Reference Manual 中找不到这种语法。
这是我的理解:<commit>~<n>指的是提交commit~ 只是表示相同,并且
现在,这是正确的吗?在那种情况下,这总是有效吗?如果 <commit>~ 将引用哪个提交呢?是否有一些相应的语法来引用下一次提交或稍后的提交
【问题讨论】:
您在Acenstry References in Pro Git 的章节中对它的工作原理有非常清楚的解释:
~ 用于获取第一个父级。^ 可用于获取其他父母(例如,^2 用于合并)。但是你没有简单的方法来引用下一次提交,即使there are more convoluted ways 得到它。
【讨论】:
简单地回答标题中的问题(因为这就是我从 Google 到这里的原因):
检查上一次提交:
git checkout HEAD^
检查下一次提交(假设没有分支):
git checkout `git log --reverse --ancestry-path HEAD..master | head -n 1 | cut -d \ -f 2`
【讨论】:
受@cexbrayat 回答的启发,我觉得这样想很有用:
如何引用提交的祖先中的某些内容,其中提交可以有多个父项:
^n 指定哪个父节点
~n 指定哪一代
两者都默认为一个。
【讨论】:
^n 也没有指定 ~n 时它会崩溃。
要引用分支上的最新提交,您还可以使用 @~1
git checkout @~1
【讨论】:
git checkout "@~1"