Как изменить поведение состояния git, показывая измененные файлы, которые в конечном итоге не фиксируются?
Я работаю в рабочей среде только для Windows с разработчиками, использующими все виды инструментов для редактирования своих файлов. Мы используем .git
вместе со стеком atlassian для версии нашего кода. Мне нравится почти все это.
Я только что закончил бороться с долгим и тяжелым боем, чтобы обернуть голову, как и почему git интерпретирует окончания строк и что core.autocrlf
делает. Мы решили использовать core.autocrlf true
и все почти хорошо.
Я хотел бы знать, как изменить это поведение git status
:
- У меня есть файл с
CRLF
окончания строки. Я изменяю окончания строки на
LF
$ git status On branch somebranch Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: Src/the_file_i_changed_to_LF.js
Но потом...
$ git commit -a warning: LF will be replaced by CRLF in Src/the_file_i_changed_to_LF.js. The file will have its original line endings in your working directory. On branch somebranch nothing to commit, working directory clean
К этому:
- У меня есть файл с
CRLF
окончания строки. Я изменяю окончания строки на
LF
$ git status On branch somebranch nothing to commit, working directory clean
- что имеет смысл, так как ничто не будет совершено в любом случае.
Это возможно?
Я считаю, что возможный дубликат не содержит ответ, который я ищу. Я хотел бы подчеркнуть, что я знаю (думаю, что я), что мои настройки core.autocrlf true
делает и хочет сохранить это таким образом. Что меня интересует, так это либо не обнаруживать изменения в git status
который не будет совершен в любом случае, или понимание, почему это невозможно.
1 ответ
Когда вы установите core.autocrlf true
все файлы в вашем рабочем каталоге будут иметь CRLF
окончание строки (не учитывайте фактическое окончание строки в хранилище). Для большинства пользователей Windows это достаточно хорошо.
Из вашего вопроса я понимаю, что вы хотите, чтобы ваши рабочие файлы каталога (= локальный файл) с LF
, Итак, здесь вы должны использовать core.autocrlf input
, Это даст вам точное окончание строки, как в хранилище (но, тем не менее, все проверки будут выполнены с LF
).
Узнайте больше о разнице между истиной, ложью и ответом в этом ответе.