Как изменить поведение состояния 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).

Узнайте больше о разнице между истиной, ложью и ответом в этом ответе.

Другие вопросы по тегам