是否引用git中的上一次/下一次提交?

是否引用git中的上一次/下一次提交?,git,commit,Git,Commit,我见过git命令使用的语法如HEAD~,但我在git中找不到这种语法 以下是我所理解的:~指的是早于(其中是一个整数)的提交步骤,commit~的意思是相同的,并且隐式地是一个 现在,这是正确的吗?在这种情况下,这总是有效的吗?如果是两个分支之间合并的结果,那么提交将引用哪个分支呢?是否有一些相应的语法用于引用下一次提交或以后的提交步骤?在关于以下内容的章节中,您已经非常清楚地解释了这是如何工作的: ~用于获取第一个父级 ^可用于获取其他父级(^2,例如,用于合并) 但是你没有一个简单的方法

我见过git命令使用的语法如
HEAD~
,但我在git中找不到这种语法

以下是我所理解的:
~
指的是早于(其中是一个整数)的提交步骤,
commit~
的意思是相同的,并且隐式地是一个


现在,这是正确的吗?在这种情况下,这总是有效的吗?如果是两个分支之间合并的结果,那么提交将引用哪个分支呢?是否有一些相应的语法用于引用下一次提交或以后的提交步骤?

在关于以下内容的章节中,您已经非常清楚地解释了这是如何工作的:

  • ~
    用于获取第一个父级
  • ^
    可用于获取其他父级(
    ^2
    ,例如,用于合并)

但是你没有一个简单的方法来引用下一次提交,即使是为了得到它。

简单地回答标题中的问题(因为这就是我从谷歌来到这里的原因):

要签出上一次提交,请执行以下操作:

git checkout HEAD^
要签出下一次提交(假设没有分支):


受@cexbrayat回答的启发,我觉得这样想很有用:

如何引用提交的祖先中的某个内容,其中提交可以有多个父项:

  • ^n
    指定哪个父级

  • ~n
    指定哪一代


两者都默认为一。

要引用分支上最近的提交,还可以使用
@~1

git checkout @~1

谢谢参考手册显然不是一个合适的地方——我认为它也会涵盖Git的语法。这是一个很好的规则:)尽管它在既没有指定
^n
也没有指定
~n
时会崩溃。这只会留下提交哈希本身,它引用。。它本身我想我应该指定还应该包括提交散列。这就是你的意思吗?我猜你的意思是它们默认为一个,就像编程中函数的参数可以有默认值一样,如果你不指定它们的话?我认为如果你有一个函数,它同时接受哪一代和哪一个父代,并返回一个提交引用,如果你没有指定它们中的任何一个,你只需要开始提交。因此,在这种情况下,生成将是0,即使您没有指定哪个生成。虽然我意识到,在1中,哪一个父母实际上是唯一的,所以这两个函数具有这样的功能并没有多大意义。换句话说,如果不指定哪一个父代,默认值为0。那么,我的意思是“默认为一”:考虑表达式“^”。没有为您所指的父级指定特定值,因此返回第一个父级。与“~”相同。没有指定数字,因此它所作用的是第一代。
git checkout @~1