在Git中更轻松地浏览历史轴?

时间:2015-03-10 10:58:25

标签: git

假设我在开发过程中发现了一个错误,我想进行回归测试,看看它何时推出。我希望能够回顾Git的历史,而没有分离HEAD的风险。理想情况下,我还想避免使用SHA(这是一个额外的步骤来查找和复制)并使用我当前在历史轴上的相对指针(排序为move -1move +2)。

我没有看到一种简单的方法。好吧,除了后退(git reset --soft HEAD@{1})。但是前进呢?我是否必须回到上一次提交并通过不同的提交再次回滚?是否有人可以制作帮助命令并使生活更轻松的别名?

2 个答案:

答案 0 :(得分:3)

您可以选择使用git bisect(正如其他人告诉您的那样),或者只使用git checkout master~N,N是从当前主服务器返回的提交数,这是您可以随时增加的数字或减少。不要害怕“超级头”状态 - 尽管有可怕的警告,但在这种状态下,没有什么不妥,特别是如果你没有犯下这种状态。 (您始终可以使用git stash将修复(如果有)从该提交移动到当前主服务器。)

将分支重置为HEAD@{N}可能是一个坏主意,因为该语法指的是reflog条目,它不包含整个历史记录,只包含当前分支的历史提示。

答案 1 :(得分:1)

这正是git bisect的用途。

请注意,如Making git bisect more useful中所述,您可以通过运行回归测试来避免将每个迭代器手动标记为“好”或“坏”,并让git bisect标记提交,具体取决于退出脚本的状态:

prove t/test/that/fails
git bisect good
prove t/test/that/fails
git bisect bad
  

无论git bisect多么精彩,我都讨厌无聊的重复。但是,您也可以将其自动化。在您启动bisect并将开始和结束提交标记为好与坏之后,您可以执行以下操作:

git bisect run prove t/test/that/fails
  

git bisect将很乐意为您运行测试,并使用程序的退出代码将提交标记为好或坏。你只需坐下来等待它完成   很多更好。