我有一个修改过的文件:
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: vw_static.vcxproj
#
即使在git reset --hard
和git checkout -- vw_static.vcxproj
之后。
git diff
似乎只表示空白(特别是行终止)差异。
$ git config core.autocrlf
input
$ git config --global core.autocrlf
input
此项目中没有.git/info/attributes
(也没有全局.gitattributes
)。
我不关心这个项目中的行结尾,我对更改这个特定文件并不感兴趣(尤其是提交与之相关的任何内容)。
我想要的只是git status
报告树未被修改。
我如何得到它?
答案 0 :(得分:1)
文件可能是以结束回购的DOS行提交的。试试这个:
git config core.autocrlf false
rm .git/index
git reset --hard
dos2unix file1
dos2unix file2
git commit -m "Ensure files are commited with Unix line endings" file1 file2
git config core.autocrlf input
git status
答案 1 :(得分:0)
以下是linux的答案:
git config --global core.autocrlf true && git checkout -- vowpalwabbit/vw_static.vcxproj && git status
事实上,要独立于平台,我必须这样做:
for opt in true false input; do
git config --global core.autocrlf $opt
for f in $(git ls-files -m); do
git checkout -- $f
done
git status
done
PS。我知道这个“解决方案”很糟糕,但我所需要的只是解决方案。我不拥有回购,我无法引入重大变化。