为什么我仍然有#34;已更改但未更新"文件?

时间:2014-10-23 14:44:10

标签: git

我有一个修改过的文件:

$ 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 --hardgit checkout -- vw_static.vcxproj之后。

git diff似乎只表示空白(特别是行终止)差异。

$ git config core.autocrlf
input
$ git config --global core.autocrlf
input

此项目中没有.git/info/attributes(也没有全局.gitattributes)。

我不关心这个项目中的行结尾,我对更改这个特定文件并不感兴趣(尤其是提交与之相关的任何内容)。

我想要的只是git status报告树未被修改。

我如何得到它?

2 个答案:

答案 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。我知道这个“解决方案”很糟糕,但我所需要的只是解决方案。我拥有回购,我无法引入重大变化。