当我
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
重置 + 状态。
我使用 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
切换回不更改行结尾。