git对分创建修改过的文件

git对分创建修改过的文件,git,bisect,Git,Bisect,当我试图使用git-bisect在jquery-git存储库中查找特定更改时,遇到了一个奇怪的问题:bisect命令似乎创建了修改过的文件,从而阻止了bisect过程的继续。以下是我首先运行的命令: git clone https://github.com/jquery/jquery.git cd jquery git bisect start git bisect bad git bisect good 2aa67026ebe6bea90fd137fc99b4c9422977e3f0 在这一

当我试图使用
git-bisect
在jquery-git存储库中查找特定更改时,遇到了一个奇怪的问题:bisect命令似乎创建了修改过的文件,从而阻止了bisect过程的继续。以下是我首先运行的命令:

git clone https://github.com/jquery/jquery.git
cd jquery
git bisect start
git bisect bad
git bisect good 2aa67026ebe6bea90fd137fc99b4c9422977e3f0
在这一点上,我得到了输出:

Bisecting: 1977 revisions left to test after this (roughly 11 steps)
[3e5520fbdc7231b3f38e145020b40524c1e6654d] Tagging the 1.4.3rc2 release.
但是现在,当我运行
git status
时,输出是:

# Not currently on any branch.
# You are currently bisecting.
#    (use "git bisect reset" to get back to the original branch)
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   build/google-compiler-20091218.jar
#   modified:   build/js.jar
#   modified:   test/data/text.php
#   modified:   test/delegatetest.html
#
#目前不在任何分支上。
#您当前正在平分。
#(使用“git对分重置”返回原始分支)
#
#未为提交而暂存的更改:
#(使用“git add…”更新将提交的内容)
#(使用“git签出--…”放弃工作目录中的更改)
#
#修改:build/google-compiler-20091218.jar
#修改:build/js.jar
#修改:test/data/text.php
#修改:test/delegatetest.html
#
四个文件显示为已修改。如果然后运行
git bisect bad
,我会收到一个错误消息,说我的本地更改将被签出覆盖


我是做错了什么还是误解了git bisect的工作原理?这个问题有什么解决办法吗?谢谢

您可能应该输入
git bisect reset HEAD
命令来清理二分法状态并返回到原始HEAD

我希望您的gitignore文件在两次修订之间发生了更改,因此git现在认为这4个文件与预期的不同


尝试一个带有适当选项的'git diff',例如--cached for your gitignore,exclude files and the modified files.

除了.gitignore更改之外,如果有其他进程在运行,并且不断生成这些文件,您也可以得到这些文件。

在我看来,当父文件发生更改时,这些文件似乎是由某种类型的观察者自动生成的

因此,只要git签出一个更改其父项之一的提交,就会生成新文件。当您尝试进行下一次对分时,它们将被新的提交覆盖。Git默认情况下不允许这种情况发生,因此会取消对分

解决方案是删除生成的文件。大多数情况下,我发现以下方法可行:

git stash
git stash drop
然而,在我目前正在进行的回购交易中,这似乎不起作用。相反,我必须将它们添加到回购协议的阶段性变更区域,然后将阶段性变更区域重置为HEAD,以通过以下操作消除它们

git add .
git reset --hard HEAD

在此之后,对分工作正常-至少在提交更改创建它们的任何文件并重新生成它们之前。

感谢您的回答!然而,我的目标是让二等分真正起作用,而不是回到头部。或者我误解了?嘿:)我可能错了,但我认为git bisect用于找出是哪个提交导致了回归。一旦你找到它,二等分的工作就完成了,你必须根据你看到的来修补头部。啊,所以问题是二等分的工作没有完成。在上面的示例中,我只完成了第一次运行(您可以在git输出中看到,还剩大约11个步骤)。问题是由于修改了文件,进程被卡住了,但我没有修改任何内容。