Я попал в странную ситуацию, когда в одной из моих ветвей файл web.config не может быть добавлен на сцену. Вывод
git add path/to/web.config
git status
То же самое, что и до добавления файла. Web.config, по-видимому, требует изменений и не добавляется на сцену.
Возможно, что более интересно, когда я удаляю Web.config из файловой системы и запускаю git status
, я получаю вывод, который указывает, что у меня есть два файла web.config, которые готовы к удалению и являются не поставлено.
# Changes not staged for commit:
# deleted: path/to/Web.config
# deleted: path/to/web.config
Обратите внимание, что в нем есть и верхний регистр W, а другой - строчный w. Файл, который я удалил в фактической файловой системе, - это верхний регистр "W".
Изменить 1
Вывод git ls-files --stage
показывает, что в индексе действительно два файла, которые отличаются друг от друга.
100644 63cd5911b9b12bbad559bb69b1b596708b932061 0 path/to/Web.config
100644 d60ab44bb38f05ffce126ddd3c3293b06e6e4096 0 path/to/web.config
Я выводил каждый из них в файл с git cat-file -p <hash> > <file>
и сравнивал два файла. В то время как текстовое содержимое одинаков, верхний регистр Web.config содержит окончания CRLF, а нижний регистр web.config содержит строчные концы.
Изменить 2
С файлом, физически удаленным из файловой системы git reset HEAD
, выдает этот вывод, но файл не восстанавливается в файловой системе и поэтому не может быть добавлен.
Unstaged changes after reset
D path/to/Web.config
D path/to/web.config
Я хочу, чтобы файл в рабочем каталоге имел CRLF, поскольку я работаю над Windows, но я хотел бы, чтобы текстовые файлы были сохранены с LF во внутренней базе данных Git. Итак, я предполагаю, что это будет 63cd591, но я могу быть здесь.
Как мне навсегда удалить путь/в/web.config из индекса в этом сценарии? Я нахожусь в Windows и не могу иметь файлы на моем пути, которые отличаются только случаем.