参考git中的上一个/下一个提交?

时间:2013-04-17 14:10:15

标签: git commit

我见过git命令使用的语法如HEAD~,但我无法在Git Reference Manual中找到这种语法。

以下是我所理解的:<commit>~<n>是指提交&lt; n&gt; 的步骤,早于&lt; commit&gt; (其中&lt ; n&gt; 是一个整数),而commit~只是意味着相同,而&lt; n&gt; 隐含的是一个。

现在,这是正确的吗?在那种情况下,这总是有效吗?如果&lt; commit&gt; 是两个分支之间合并的结果,那么提交将<commit>~引用怎么办?是否有一些相应的语法用于引用下一次提交或稍后提交&lt; n&gt; 步骤?

4 个答案:

答案 0 :(得分:16)

您可以在Acenstry References in Pro Git一章

中清楚地解释其工作原理
  • ~用于获取第一个父级。
  • ^可用于获取其他父母(^2,例如,合并)。

但是你没有一种简单的方法来引用下一次提交,即使there are more convoluted ways得到它也是如此。

答案 1 :(得分:14)

简单地回答标题中的问题(因为那是我从谷歌那里得到的):

结帐以前的提交:

git checkout HEAD^

检查下一次提交(假设没有分支):

git checkout `git log --reverse --ancestry-path HEAD..master | head -n 1 | cut -d \  -f 2`

答案 2 :(得分:6)

受@ cexbrayat的回答启发,我觉得以这种方式思考是有用的:

如何在提交的祖先中引用某些东西,其中提交可以有多个父级:

  • ^n指定哪个父级

  • ~n指定哪一代

两者都默认为一个。

答案 3 :(得分:1)

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

git checkout @~1