Whitespace:当 git reset --hard HEAD 无法修复时,如何解决 git“需要更新”问题?

问题描述 投票:0回答:1

当我

git svn rebase
时,我收到此错误:

src/thread.cpp: needs update
update-index --refresh: command returned error: 1

该文件使用 unix 行结尾。差异显示一行有 CRLF 已被删除。当我

git reset --hard HEAD
时,该文件仍被标记为已修改且具有相同的更改。大概是因为 git 自动转换换行符。我有时会看到这个警告:

警告:在“src/thread.cpp”的工作副本中,下次 Git 触及它时,CRLF 将被 LF 替换

我使用

autocrlf=false
,但我也尝试过使用
input
true
重置 + 状态。

git line-endings
1个回答
0
投票

我使用 svn checkout 删除有问题的行并提交。

然后,我在

git reset
之前删除了有问题的文件,因此
autocrlf
适用于该文件。这似乎并没有 100% 工作——我必须多次运行这个脚本才能工作(但早期版本在
git status -uno --porcelain
之前使用
git svn rebase
):

git config core.autocrlf true
git rm --force src/thread.cpp
git reset --hard HEAD
git svn rebase

当到达修复行结尾的 svn 提交时,rebase 会中止,但我将其作为 git 提交,这样我就可以

git reset --hard origin/trunk
并能够再次
git svn rebase
!我还确保运行上面的脚本,但使用
core.autocrlf false
切换回不更改行结尾。

© www.soinside.com 2019 - 2024. All rights reserved.