Комментарии 6
https://www.baeldung.com/git-assume-unchanged-skip-worktree
Правильнее использовать skip-worktree а не assume-unchanged
Наверное можно пропустить первый шаг, если складывать измененные файлы в stash, вместо копирования в отдельную папочку
Если внести файл в .gitignore, то он не будет отслеживаться гитом лишь в том случае, если этого файла нет в удаленном репозитории.
Удалённый репозиторий (которых кстати может быть несколько) тут вообще ничего не решает. Отслеживаться файл не будет в том случае, если он и до этого не отслеживался. А приведённые дальше команды позволяют обойти это правило.
Да, бывают ситуации, когда это нужно. Но приведенный в статье пример с конфигом, скорее, нужно решать другим способом, вне гита. Например, поддерживать слияние нескольких конфигов (один общий в репозитории, другой локальный у каждого разработчика в .gitignore содержит только измененные настройки). Или переопределять конфиг переменными окружения. Чтобы не приходилось выполнять все эти гит-команды в произвольные моменты работы над проектом.
Часто существует путаница между конфигами и секретами. Они похожи и хочется именть доступ к ним единообразно. Например адрес базы это конфиг а пароль от базы это секрет.
Хранить всё как конфиги просто, но не безопастно. Хранить всё как секреты, приводит к дополнительным сложностям.
Мне нравится подход со слиянием файлов.
Все конфигарационные файлы я бы бил на три группы. Конфиги от развёртываний(прод, тест итд.), личные конфиги и секреты.
Конфиги развёртываний в репозитории.
Файл с секретами добавляется только в момент депоя. Локально он свой, в .gitignore
Личные конфиги с переопредениями локально свои, в .gitignore
Git: Игнорирование отслеживания файлов, которые уже есть в удаленном репозитории