Как заставить 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"

Но теперь у моей рабочей копии все еще есть возврат каретки! У меня есть неотслеживаемые файлы, которые я хотел бы сохранить. Как мне сделать git checkout в главной ветке снова с нормализованными файлами?

Я знаю, что файлы нормализованы в репозитории, потому что, когда я клонирую репозиторий, у меня есть все файлы без возврата каретки.

Ответы на вопрос(2)

Решение Вопроса

Ах ах! Оформите предыдущий коммит, затем оформите мастер.

git checkout HEAD^
git checkout -f master
 Jason19 мар. 2014 г., 16:06
Ах, да, спасибо за это! Услышав это, яЯ думаю, мы могли бы просто удалить интересующие вас файлы и запустить проверку. Для меня был только один файл, который я пытался исправить. Но, конечно, это могут быть все файлы, сотни или тысячи.
 Jason15 июл. 2015 г., 01:29
@dval, посмотрите правки этого поста, и выПосмотрим альтернативный способ сделать это. Я тоже работаю на Mac, и это сработало для меня. Я также призываю вас обновить ваш git до 2+, и вы можете использовать Homebrew, чтобы сделать это безопасным и удобным способом.
 Jidehem21 дек. 2017 г., 11:37
Didn»у нас не получается при попытке заменить CRLF на LF (хотя.gitattributes содержитtext eol=lf). Решение @mechsin работало без сбоев.
 jstine06 янв. 2018 г., 16:21
Это неэто действительно работает. GIT будет обновлять только файлы, которые изменились между двумя коммитами (за некоторыми исключениями). Если хранилище совершенно новое, например. только два коммита и первый окажется пустым, тогда это решение будет работать. В противном случае вам нужно принудительно удалить все файлы, как описано mechsin 'ответ.
 Elvis Technologies12 янв. 2019 г., 05:23
Привет! я привел сюда после того, как получил эту ошибкуerror: cannot stat 'empresas/presupuesto/acciones' Permission denied  когда намерение слиться превращается в мастера, и тогда все было хорошо, когда вынудили git оформить заказgit checkout -f master +1 за это
 pfalcon18 мар. 2014 г., 04:38
Спасибо за этот обходной путь, но этовопиющая проблема в git that "оформить заказ Безразлично»действительно заставить повторную проверку. Другой вариант - сначала удалить все файлы рабочих копий (т.е. все, кроме .git dir).
 dval10 окт. 2014 г., 16:39
Это не работает на git 1.8.3 (mac) с: error: pathspec 'ГОЛОВА ^ не найдено ни одного файла (ов), известных git.

Как отмечали другие, можно просто удалить все файлы в репозитории, а затем проверить их. Я предпочитаю этот метод, и это можно сделать с помощью кода ниже

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

или одна строка

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

Я использую это все время и убежищене нашел никаких минусов!

Для дальнейшего объяснения-z добавляет нулевой символ в конец каждой записи выводаls-filesи-0 говоритxargs чтобы ограничить вывод, который он получал этими нулевыми символами.

Ваш ответ на вопрос