如何在一个 HEAD 指向后立即检查版本?

How to checkout the version immediately following the one HEAD is pointing to?

如果我检查了以前版本的回购协议。为简单起见,我们假设每个提交都由一个数字表示,如下所示。一个 HEAD 指向后如何查看版本?我知道我可以通过

到达之前的提交
git checkout HEAD~1

但是我如何在不知道其 SHA-1 值的情况下到达后一个提交(在本例中为第 4 个提交)?

1    2     3        4         5
          HEAD

这不是那么容易,因为 Git 没有任何方法来引用 "future" 提交(当 3 被签出时,没有现成的引用 4).但是,如果我们在其中加入很多假设,我们可以创建一个 shell 怪物来执行此操作(为清楚起见避免缩写):

git checkout $(git rev-list --first-parent --reverse HEAD..master | head -1)

请注意,这仅在您当前签出的提交不是合并的一部分时才有效(只能通过合并提交的第二个父项访问)。我们也可以做一个更大的怪物来自动找到正确的合并提交,但它会开始占用专用工具的大小...