我正在使用Windows。当暂存文件时,我收到此错误。
Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui.
后跟已从 LF 转换为 CRLF 的文件列表
在大量阅读了 Git 使用跨平台的 CRLF / LF 问题后,我或多或少地了解了发生了什么,并且我试图确定哪种 autocrlf 设置最适合我,但我无法理解为什么 Git 这么说更新索引失败。我的理解是它已经转换了 EOF,那么这有什么问题以及为什么它告诉我更新索引失败。我是否需要修复某些问题(除了选择适当的 autocrlf 设置)或者我可以继续吗
然后我有两个选项“继续”和“解锁索引”,这是什么意思以及最好的行动方案是什么。
git config --global core.autocrlf false
一直是我的推荐(参见“Windows 上的 Git 1.6.4 beta (msysgit) - Unix 或 DOS 行终止 https://stackoverflow.com/questions/1249932/git-1-6-4-beta-on-windows-msysgit-unix-or-dos-line-termination/1250133#1250133").
但是,在您的情况下,您可以“继续”,但此警告指出某些文件的转换可能不可逆:
core.safecrlf
如果为 true,则让 git 检查当行尾转换处于活动状态时转换 CRLF 是否可逆。 Git 将验证命令是否直接或间接修改了工作树中的文件。例如,提交一个文件,然后签出同一文件应该会在工作树中生成原始文件。如果当前设置不是这种情况core.autocrlf
,git 将拒绝该文件。
该变量可以设置为“warn”,在这种情况下,git 只会警告不可逆的转换,但会继续操作。
如果您不想看到此警告,如中所述这个线程 http://comments.gmane.org/gmane.comp.version-control.msysgit/7232,你可以设置core.safecrlf
to false
.
您还可以通过 git gui 的工具菜单隐藏文件,并向这些工具添加一些选项,例如,git配置文件 https://github.com/adamfranco/dotfiles/blob/master/.gitconfig.
有趣的是,对于每个工具,您可以添加:
guitool.<name>.norescan
该工具完成执行后,请勿重新扫描工作目录以查找更改。
您能详细说明一下解锁索引吗
你可以在index.tclgit-gui 脚本 https://github.com/git/git/blob/master/git-gui/lib/index.tcl#L4-L57:它会删除 git-gui 在操作索引时创建的 index.lock 文件。
您可以在以下位置查看更多内容“lockfile API”文档页面 https://github.com/git/git/blob/master/Documentation/technical/api-lockfile.txt:
相互排斥.
当我们写出一个新的索引文件时,首先我们创建一个新文件$GIT_DIR/index.lock
,将新内容写入其中,并重命名为最终目的地$GIT_DIR/index
.
我们尝试创造$GIT_DIR/index.lock
文件与O_EXCL
这样当其他人已经尝试更新索引文件时我们就可以注意到并失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)