Игнорирование изменений в закоммиченном файле в Git

Игнорирование изменений в закоммиченном файле в Git

Обычно игнорировать файлы в 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.
Пользуйтесь этим подходом как временным решением, чтобы войти в новый проект, или разработать что-то на скорую руку. Я настоятельно не рекомендую пользоваться этим решением в долгосрочной перспективе.
Больше про это вы можете прочитать по ссылке.


Андрей Писаревский

Автор: Андрей Писаревский 

PHP | WordPress Team Lead. Имею коммерческий опыт в программировании с 2010 года и экспертизу в полном цикле веб разработки: Frontend, Backend, QA, Server administration, управление крупными командами и Enterprise проектами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *