引用git中的上一个/下一个提交?

vbopmzt1  于 2023-01-15  发布在  Git
关注(0)|答案(5)|浏览(136)

我见过git命令使用HEAD~这样的语法,但我在Git Reference Manual中找不到这种语法。
以下是我的理解:<commit>~<n>指的是早于 * * 的提交 步(其中 是整数),并且commit~简单地表示相同并且 隐含地是1。
现在,这是正确的吗?在这种情况下,这总是有效的吗?如果 是两个分支合并的结果,<commit>~将引用哪个提交?是否有一些对应的语法来引用下一个提交或之后的提交 步骤?

hgc7kmma

hgc7kmma1#

在Pro Git中的Ascistry参考一章中,你已经非常清楚地解释了这是如何工作的:

  • ~用于获取第一个父对象。
  • ^可用于获取其他父节点(例如,对于合并,^2)。

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

bogh5gae

bogh5gae2#

简单地回答标题中的问题(因为这是我从谷歌到这里的原因):
要 checkout 上一次提交:

git checkout HEAD^

要 checkout 下一个提交(假设没有分支):

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

xmakbtuz3#

受@cexbrayat回答的启发,我发现这样想很有用:
如何引用提交祖先中的某个东西,其中一个提交可以有多个父提交:

  • ^n指定哪个父级
  • ~n指定生成

两者都默认为一。

6yt4nkrj

6yt4nkrj4#

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

git checkout @~1
uz75evzq

uz75evzq5#

和OP一样,我也在寻找关于这个主题的官方文档,结果发现了这个SO问题。参见Git - Revision Selection

相关问题