【问题标题】:Git: Move to previous and next commitGit:移动到上一个和下一个提交
【发布时间】:2011-04-05 16:01:16
【问题描述】:

我需要一种方法来快速移动到 git 分支中的上一个和下一个提交。

对于以前的我发现我可以做到:

git reset --hard HEAD~1

并且可能在 git prev 或其他名称中使用别名,但我不知道如何“向上”移动到下一个提交。

理想的解决方案是使用 2 个别名 git prevgit next

谢谢

【问题讨论】:

  • git reset --hard HEAD~1 具有破坏性;它丢弃第二个最近提交之后的所有提交内容(例如,最近的提交以及索引和工作副本中的任何更改)。 git checkout 是您应该使用的命令。
  • 如果您处于合并提交(多个父项)或作为多个提交的父项的提交中,您希望发生什么? git 存储库就像一个 DAG,分支只是指向该图的指针,因此除非您有线性历史记录,否则“上一个”和“下一个”不一定是明确定义的。
  • 你真正想做什么?如果您碰巧正在寻找一个引入问题(或修复问题)的提交,那么您实际上希望使用git bisect,它可以帮助您进行二进制搜索。
  • @hammar 让我们保持简单并假设一个线性历史

标签: git history commit


【解决方案1】:

git 有一个方便的别名设置,称为 ORIG_HEAD,它跟踪最后使用的磁头。因此,当您执行 git reset --hard HEAD~1 时,您刚刚重置的头部数据存储在 ORIG_HEAD 中。

所以别名 git prev 到 git reset --hard HEAD~1 (或 HEAD^1) git reset --hard ORIG_HEAD 旁边的别名 git

【讨论】:

  • 这几乎可以做到,问题是尝试两次git next
  • 另外,当有多个开发人员为 repo 做出贡献时,您的“git prev”无法正常工作。它跳转到同一个开发者之前的提交。
猜你喜欢
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多