Обычно игнорировать файлы в Git можно довольно просто — с помощью .gitignore
. Но что если файл был закоммичен в GIT, а вы хотите сделать в нем измнения, да так, чтобы эти измнения не отслеживал GIT. Поможет ли .gitignore в этом случае?
На самом деле .gitignore
не создан для игнорирования уже существующих в индексе GIT файлов.
Рассмотрим реальный пример
Вы онбордитесь на новый проект, а в нем используют Apache как вебсервер. Склонировав репозиторий, вы видите что внутри лежит .htaccess
файл, а в нем прописаны редиректы с http на https домен. Сайт на https локально работать не будет, т.к. docker окружение под это не было настроено.
Чтобы избавиться от редиректов и локальный сайт заработал, вам необходимо закомментировать эти строки в .htaccess
файле.
Но любое изменение в .htaccess
файле приведет к тому, что он отобразится в GIT в измененных файлах.
Соответственно появится другая проблема, эти изменения постоянно будут мелькать когда вы будите коммитить любые изменения. В конечном счете вы их запушите и есть у вас нет процесса code review и QA сервера — то они смогут попасть на production сервер и вызовут ошибки и возможно вы заметите это не сразу.
Есть несколько решений этой проблемы как:
- использовать .htaccess override
- пробросить сертификаты
- разделить .htaccess для боевых серверов и локального.
Все эти решения приведут к тому, что вам необходимо будет тестировать работу этого функционала, понадобится работа девопсов и процесс затянется. Но комфортно работать хочется здесь и сейчас и что же делать?
Решение
Решение в этой ситуации это — использовать временное игнорирование файлов в GIT.
Чтобы временно игнорировать конкретный файл в GIT, выполните следующую команду:
git update-index --assume-unchanged <temp_file>
Теперь изменения в <temp_file>
не будут отслеживаться GIT.
Если вы захотите снова отслеживать изменения, достаточно выполнить команду:
git update-index --no-assume-unchanged <temp_file>
Подытожим
Вы познакомились с подходом игнорирования изменений в закоммиченном файле GIT.
Пользуйтесь этим подходом как временным решением, чтобы войти в новый проект, или разработать что-то на скорую руку. Я настоятельно не рекомендую пользоваться этим решением в долгосрочной перспективе.
Больше про это вы можете прочитать по ссылке.