在平分期间将当前提交标记为好或坏之前,是否需要`git reset --hard`?

时间:2014-02-21 04:49:17

标签: git git-bisect

在我目前的工作流程中,我正在更新/重新定位一个古老的补丁,以对抗最近版本的项目。

在我目前的工作流程中,我使用git bisect查找可用于干净地应用补丁的最新提交。

要检查补丁是否可以干净地应用,我需要修补文件并检查退出状态。此过程更改了工作目录,该目录不再是干净的。

在将当前提交应用为好或坏之前,我总是使用git reset --hard,但此任务很烦人。是否需要或git bisect会为我照顾它?

2 个答案:

答案 0 :(得分:1)

最好像你一样做git reset --hard

如果本地更改不受结帐影响那么无关紧要,他们只会“和你一起”。

但是,如果您的本地更改会被结帐覆盖,则会产生错误

$ git bisect good
Bisecting: 2 revisions left to test after this (roughly 1 step)
error: Your local changes to the following files would be overwritten by checkout:
        README
Please, commit your changes or stash them before you can switch branches.
Aborting

答案 1 :(得分:1)

我几次处于完全相同的情况。在“变形”到完全不同的版本之前,树最好处于干净状态。

我最终把补丁放到了藏匿处。

通常,在二等分的情况下,一个好的方法是将迭代放入一个命令行,这可以很容易地从shell历史中重复。 E.g:

$ if git stash pop ; then <command to do a clean build and test>; git stash save; fi

然后通常剩下的就是git bisect goodgit bisect bad,并在下一个测试版本重新运行上面的内容。如果存储不适用(if失败),您必须解决它,或者只使用git bisect skip声明修订版本不可用。