我有一个完全线性的 git 历史(为了让事情变得简单),这样
git log --oneline --graph --all
显示
* eff3139 (branch_2) foo
* f217e05 bar
* 8d1c27b baz
* c10bb66 (HEAD -> master, origin/master, origin/HEAD) qux
* dd2952b quz
* 321dedc zot
* b00284b blarg
头坐在 c10bb66 的 master 上,我可以轻松地使用
git checkout @~
或 321dedc 使用相同的方法但使用 @~2 检查 dd2952b。但是,如何轻松签出 8d1c27b、f217e05 或当前提交的其他子项?
git checkout @~-1
(我唯一的想法)不幸地导致了错误error: pathspec '@~-1' did not match any file(s) known to git
我怀疑 git 中没有办法做到这一点,这很遗憾。
我怀疑 git 中没有办法做到这一点,除非最近添加了一些内容。虽然实际提出的问题并不相同,但“git diff HEAD^”的反义词是什么?和如何在 Git 中找到下一个提交? (ref 的子/子) 似乎表明在 git 中没有办法做到这一点。
许多答案错误地表明这在原则上是不可能的——但这并非不可能,正如
git log --oneline --graph --all
所示; git 只是不会让你这么做。