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

Обычно игнорировать файлы в Git можно довольно просто — с помощью .gitignore. Но что если файл был закоммичен в GIT, а вы хотите сделать в нем измнения, да так, чтобы эти измнения не отслеживал GIT. Поможет ли .gitignore в этом случае?
На самом деле .gitignore не создан для игнорирования уже существующих в индексе GIT файлов.

.wpj-jtoc.—jtoc-theme-basic-light.—jtoc-has-custom-styles {
—jtoc-numeration-suffix: «. «;
—jtoc-numeration-color: #adadad;
}

Рассмотрим реальный пример

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

Источник: WP-Yoda.com

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

Андрей Писаревский — Backend Team Lead в EPAM. Имею коммерческий опыт в программировании с 2010 года и экспертизу в полном цикле веб разработки: frontend, backend, QA, а так же server administration. Использую в работе: PHP, WordPress, Slim Framework, Linux, Docker, Agile.

%d такие блоггеры, как: