问题
Okay, so I added the file .gitattributes
with lines like this
*.css text
*.js text
etc...
I then followed the instructions at 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"
But now my working copy still has the carriage returns! I have untracked files that I would like to keep. How do I have git checkout the master branch again with the normalized files?
I know the files are normalized in the repository because when I clone the repo, I have all the files without the carriage returns.
回答1:
Ahah! Checkout the previous commit, then checkout the master.
git checkout HEAD^
git checkout -f master
回答2:
As others have pointed out one could just delete all the files in the repo and then check them out. I prefer this method and it can be done with the code below
git ls-files -z | xargs -0 rm
git checkout -- .
or one line
git ls-files -z | xargs -0 rm ; git checkout -- .
I use it all the time and haven't found any down sides yet!
For some further explanation, the -z
appends a null character onto the end of each entry output by ls-files
, and the -0
tells xargs
to delimit the output it was receiving by those null characters.
来源:https://stackoverflow.com/questions/17223527/how-do-i-force-git-to-checkout-the-master-branch-and-remove-carriage-returns-aft