Git move n 向前提交

标签 git git-checkout

我在存储库的提交 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/

相关文章:

git checkout <提交> 。不删除提交后添加的文件

git - 在没有文件 check out 的情况下切换 Git 分支

git - 获取错误的 repo 后修复 Git 历史

eclipse - 如何解决 EGit 中的冲突

macos - ubuntu 12.04 virtual box vm 中用于我 mac 上共享文件夹的 git 行结束选项

git - 他们是恢复 `git checkout` 的方法吗?

Git 或 Hg 到 SVN 的桥梁

git blame 使用 -L <n,m> 选项抛出一个错误的修订错误

git - 更新**不是**当前分支(在 Git 中)

git - "fatal: You are on a branch yet to be born"在这种情况下意味着什么