git commit. игнорирование предположения без изменений
У меня есть файл, который я пометил как предполагаемый без изменений при оформлении заказа. Это соблюдается большинством команд (например,
diff
,
add .
,
commit -a
), но почему-то эта команда игнорирует флаг:
git commit .
Это ошибка? Если нет, есть ли флаг для изменения поведения git в этом случае?
(Моя версия git в 2.25.1, если это важно.)
1 ответ
Флаг «предполагать неизменность» для Git используется для повышения производительности на системах с медленным
lstat(2)
звонки. Когда вы устанавливаете этот бит, вы обещаете вообще не изменять файл. Если вы изменяете файл, вы должны сбросить бит, чтобы уведомить Git об изменении. Это только оптимизация производительности.
Если вы пытаетесь игнорировать изменения в отслеживаемых файлах, в FAQ по Git ясно сказано, что это невозможно :
Git не предоставляет способ сделать это. Причина в том, что если Git нужно перезаписать этот файл, например, во время проверки, он не знает, являются ли изменения в файле ценными и должны быть сохранены, или они не имеют значения и могут быть безопасно уничтожены. Поэтому он должен выбрать безопасный маршрут и всегда сохранять их.
Заманчиво попробовать использовать определенные функции
git update-index
, а именно биты accept-unchanged и skip-worktree, но они не работают должным образом для этой цели и не должны использоваться таким образом.
Часто задаваемые вопросы рекомендуют подход к файлам конфигурации:
Если вашей целью является изменение файла конфигурации, часто бывает полезно зарегистрировать файл в репозитории, который является шаблоном или набором значений по умолчанию, которые затем можно скопировать вместе и изменить соответствующим образом. Этот второй измененный файл обычно игнорируется, чтобы предотвратить его случайное сохранение.