在Git中浏览历史轴更简单的方法?

在Git中浏览历史轴更简单的方法?,git,Git,假设我在开发过程中发现了一个bug,我想做回归测试,看看它是什么时候被引入的。我想能够倒回Git的历史,而不会有头脱落的风险。理想情况下,我还希望避免使用SHA(这是查找和复制的额外步骤),并在我当前位于历史轴上的位置使用相对指针(类似于move-1或move+2) 我不认为有一个简单的方法可以做到这一点。好吧,除了向后移动(git reset--soft HEAD@{1})。但是向前走呢?我是否必须返回到上一次提交,并通过不同的提交量再次倒带?有没有什么别名可以用来使用helper命令并使生活

假设我在开发过程中发现了一个bug,我想做回归测试,看看它是什么时候被引入的。我想能够倒回Git的历史,而不会有头脱落的风险。理想情况下,我还希望避免使用SHA(这是查找和复制的额外步骤),并在我当前位于历史轴上的位置使用相对指针(类似于
move-1
move+2

我不认为有一个简单的方法可以做到这一点。好吧,除了向后移动(
git reset--soft HEAD@{1}
)。但是向前走呢?我是否必须返回到上一次提交,并通过不同的提交量再次倒带?有没有什么别名可以用来使用helper命令并使生活更轻松?

这正是它的用途

请注意,如中所述,通过运行回归测试,并根据脚本的退出状态让git对分,可以避免手动将每个迭代器标记为“好”或“坏”:

prove t/test/that/fails
git bisect good
prove t/test/that/fails
git bisect bad
不管git bisect有多美妙,我讨厌无聊的重复。但是,您也可以将其自动化。在开始对分并将开始和结束提交标记为“好”和“坏”后,可以执行以下操作:

git bisect
将很高兴地为您运行测试,并使用程序的退出代码,根据情况标记提交的是好是坏。你只需坐下来等它结束。
好多了

这正是我们的目的

请注意,如中所述,通过运行回归测试,并根据脚本的退出状态让git对分,可以避免手动将每个迭代器标记为“好”或“坏”:

prove t/test/that/fails
git bisect good
prove t/test/that/fails
git bisect bad
不管git bisect有多美妙,我讨厌无聊的重复。但是,您也可以将其自动化。在开始对分并将开始和结束提交标记为“好”和“坏”后,可以执行以下操作:

git bisect
将很高兴地为您运行测试,并使用程序的退出代码,根据情况标记提交的是好是坏。你只需坐下来等它结束。
好多了


您可以选择使用
git-bisect
(正如其他人告诉您的那样),或者只使用
git-checkout-master~N
,N是从当前主机返回的提交数,这是您可以始终递增或递减的数。不要害怕“超然的头脑”状态——尽管有可怕的警告,处于这种状态没有什么错,尤其是如果你没有做出承诺的话。(您始终可以使用
git stash
将修复程序(如果有)从该提交移动到当前主机。)


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

您可以选择使用
git-bisect
(正如其他人告诉您的),或者只使用
git-checkout-master~N
,N是从当前主机返回的提交数,这是始终可以递增或递减的数。不要害怕“超然的头脑”状态——尽管有可怕的警告,处于这种状态没有什么错,尤其是如果你没有做出承诺的话。(您始终可以使用
git stash
将修复程序(如果有)从该提交移动到当前主机。)


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

您需要
git bisect
。您需要
git bisect