在我目前的工作流程中,我正在更新/重新定位一个古老的补丁,以对抗最近版本的项目。
在我目前的工作流程中,我使用git bisect查找可用于干净地应用补丁的最新提交。
要检查补丁是否可以干净地应用,我需要修补文件并检查退出状态。此过程更改了工作目录,该目录不再是干净的。
在将当前提交应用为好或坏之前,我总是使用git reset --hard
,但此任务很烦人。是否需要或git bisect
会为我照顾它?
答案 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 good
或git bisect bad
,并在下一个测试版本重新运行上面的内容。如果存储不适用(if
失败),您必须解决它,或者只使用git bisect skip
声明修订版本不可用。