我正在尝试git bisect一个代码库,以找到问题的根源。
当签出旧版本时,由于eol问题,文件将被修改:
$ git status
HEAD detached at v1.9.3
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: ports/stm32/usbdev/Release_Notes.html由于这一变化,git bisect被卡住了:
error: Your local changes to the following files would be overwritten by checkout:
ports/stm32/usbdev/Release_Notes.html
Aborting我正在处理上游代码库中的历史提交,因此我不能修改.gitattributes,也不能修改文件并重新设置所有内容。
我尝试在这个存储库中将core.safecrlf设置为false:
git config core.safecrlf false似乎没有对这个问题产生任何影响的...but。是否有任何方法可以在不修改存储库本身的情况下重写Git对此文件的行为?
发布于 2018-10-11 21:26:56
我承认这是一种丑陋和可怕,但它似乎有效(见评论):对于每一个文件,Git抱怨,只需删除工作树副本。例如,在下列情况下:
git bisect good(或者和bad一样),你收到了关于ports/stm32/usbdev/Release_Notes.html的抱怨。所以:
rm ports/stm32/usbdev/Release_Notes.html
git bisect good # or badGit现在可以自由地切换到下一次提交以进行测试。
不要盲目地删除所有文件,因为下一次提交的git checkout不会提取当前和下一次提交中相同的文件。二分法确实应该有一种将-f传递给git checkout步骤的方法,以处理git reset --hard HEAD由于行尾问题仍然保留修改文件的情况。嗯,或者Git应该有一种更通用的方法来处理“存储库中的文件因行问题的结束而永远无法匹配工作树”的情况。
https://stackoverflow.com/questions/52768905
复制相似问题