我在存储库的提交 C 中(我刚刚执行了 git checkout hash_of_C
)。
A - B - C - ...<19>... - D - ...<many many commits> - Z
哪个Z是master分支的最后一次提交
现在,我想向前推进 20 次提交。
最佳答案
如果我理解正确,你想从 C 向前推进 20 次提交,Z 是主分支上的最后一次提交,但不一定是 C 的第 20 次提交。
从 C 做
C > git checkout $(git rev-list --topo-order HEAD..master | tail -20 | head -1)
它将检查前 20 次提交如果它存在。
我对此并不完全有信心,但这是它的作用。
git rev-list --topo-order HEAD..master 将为您提供从 C 到 master 的所有提交列表/每行一个。
> ➦ b17c0a7 > git rev-list --topo-order HEAD..master
3c5b47003a5bc576d6c5d13b065bb70aef28828f
306fee6443d0e2ebb0a5372dfdff0d55728950f3
02acfd4b6987dfc8bc689a18d21ee82ad8132839
当我们执行 tail -20 时,我们基本上想从该列表的底部 20 行向上切出一 block 。如果我们执行 head -1,我们会进一步削减列表,只取最上面的项目。这样我们就可以从当前提交中获取第 20 个项目。
这是$(git rev-list --topo-order HEAD..master | tail -20 | head -1)
关于Git move n 向前提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41905686/