如何强制git检出主分支,并使用“text”属性对文件进行规范化之后删除回车符?

好的,所以我用像这样的行添加了文件.gitattributes

 *.css text *.js text etc... 

然后,我按照http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in中的说明进行操作

 $ rm .git/index # Remove the index to force Git to $ git reset # re-scan the working directory $ git status # Show files that will be normalized $ git add -u $ git add .gitattributes $ git commit -m "Introduce end-of-line normalization" 

但是现在我的工作拷贝还有回车! 我有未跟踪的文件,我想保留。 如何使用规范化的文件再次检查master分支?

我知道这些文件是在存储库中进行规范化处理的,因为当我克隆回购时,所有的文件都没有回车。

啊啊! 检出之前的提交,然后检出主。

 git checkout HEAD^ git checkout -f master 

正如其他人指出,可以删除回购中的所有文件,然后检查出来。 我更喜欢这种方法,可以用下面的代码来完成

 git ls-files -z | xargs -0 rm git checkout -- . 

或一条线

 git ls-files -z | xargs -0 rm ; git checkout -- . 

我一直使用它,还没有find任何不好的方面呢!

对于一些进一步的解释, -zls-files输出的每个input的末尾附加一个空字符,而-0告诉xargs分隔这些空字符所接收的输出。