Git move n承诺前进

Ana*_*dis 2 git git-checkout

我正在提交git checkout hash_of_C存储库的C(我刚刚做过).

A - B - C - ...<19>... - D - ...<many many commits> - Z
Run Code Online (Sandbox Code Playgroud)

哪个Z是主分支中的最后一次提交

现在,我想提前20次提交.

小智 5

如果我正确理解,你想从C向前推进20次提交,Z是主分支上的最后一次提交,但不一定是C的第20次提交.

来自C do

C > git checkout $(git rev-list --topo-order HEAD..master | tail -20 | head -1)
Run Code Online (Sandbox Code Playgroud)

如果它存在,它将检出20提交转发.

我对此并不完全有信心,但这就是它的作用.

git rev-list --topo-order HEAD..master将为您提供从C到master /每行一个的所有提交的列表.

> ? b17c0a7 > git rev-list --topo-order HEAD..master          
3c5b47003a5bc576d6c5d13b065bb70aef28828f
306fee6443d0e2ebb0a5372dfdff0d55728950f3
02acfd4b6987dfc8bc689a18d21ee82ad8132839
Run Code Online (Sandbox Code Playgroud)

当我们做尾部-20时,我们基本上想从底部20行中切出这个列表中的一块.如果我们做头-1,我们进一步削减列表,只采取顶部项目.这样我们从当前提交中获得第20项.

哪个是$(git rev-list --topo-order HEAD..master | tail -20 | head -1)