Git:移动到上一个和下一个提交

8
我需要一种快速移动到Git分支的上一个和下一个提交的方法。
对于上一个提交,我发现可以执行以下操作:
git reset --hard HEAD~1
可能可以将其设置为别名 git prev 或其他名称,但我找不到如何向上移动到下一个提交。
理想情况下,解决方案将使用两个别名 git prevgit next
谢谢。

4
git reset --hard HEAD~1 是一种破坏性的操作,它会丢弃最近两个提交之后的所有修改(例如最新的提交和索引以及工作区的任何更改)。你应该使用 git checkout 命令。 - gotgenes
1
可能是Git中引用提交的子级的重复问题。 - Laurence Gonsalves
2
如果您处于合并提交(多个父级)或是多个提交的父提交中,您希望发生什么呢?Git存储库就像一个有向无环图(DAG),分支只是指向该图的指针,因此除非您具有线性历史记录,“previous”和“next”不一定定义明确。 - hammar
1
你真正想做什么?如果你正在寻找引入问题(或修复问题)的提交,那么你实际上应该使用 git bisect,它可以帮助你进行二分查找。 - Cascabel
1
@hammar,让我们保持简单,假设一个线性历史。 - Pablo Fernandez
1个回答

4

Git提供了一个方便的别名ORIG_HEAD来跟踪上次使用的头部。因此,当您执行git reset --hard HEAD~1时,刚刚重置掉的头部的数据将存储在ORIG_HEAD中。

所以,将git prev设置为git reset --hard HEAD~1(或HEAD^1),将git next设置为git reset --hard ORIG_HEAD的别名。


6
几乎完成了,问题出在尝试连续两次使用“git next”命令时。 - Pablo Fernandez
此外,当有多个开发人员贡献到仓库时,您的“git prev”无法正常工作。它会跳转到同一开发人员所做的上一个提交。 - fangmobile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接