我见过 git 命令使用诸如 之类的语法HEAD~
,但我无法在 Git参考手册中找到这种语法。
这是我所理解的:<commit>~<n>
指的是提交<n>步骤早于<commit>(其中<n>是一个整数),并且commit~
简单地表示相同并且<n>隐式为一。
现在,这是正确的吗?在那种情况下,这总是有效吗?如果<commit>是两个分支之间合并的结果,那么提交将<commit>~
引用哪个呢?是否有一些相应的语法来引用下一个提交或稍后的提交<n>步骤?
在 Pro Git 中的 Acenstry References一章中,您对它的工作原理有一个非常清楚的解释:
~
用于获取第一个父级。^
可用于获取其他父母(^2
例如,用于合并)。但是你没有一个简单的方法来引用下一个提交,即使有更复杂的方法来获取它。
简单地回答标题中的问题(因为这就是让我从谷歌来到这里的原因):
要签出上一个提交:
git checkout HEAD^
签出下一个提交(假设没有分支):
git checkout `git log --reverse --ancestry-path HEAD..master | head -n 1 | cut -d \ -f 2`
受@cexbrayat 回答的启发,我发现这样想很有用:
如何引用提交的祖先中的某些内容,其中提交可以有多个父项:
^n
指定哪个父级
~n
指定哪一代
两者都默认为一个。
要引用分支上的最新提交,您还可以使用@~1
git checkout @~1