Git: Как игнорировать изменения в отслеживаемом файле? - PullRequest
0 голосов
/ 09 мая 2018

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

Я попытался добавить файл в файл .gitignore, но, поскольку файл отслеживается, он не игнорируется. Это хорошо и хорошо в других ситуациях, но мне интересно, могу ли я здесь что-нибудь сделать?

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Я рекомендую именовать файл, контролируемый источником, иначе, чем его фактическое ожидаемое имя Например, если файл обычно называется config.json, назовите файл примера config.json.dist и зафиксируйте этот файл. Затем добавьте config.json в ваш файл .gitignore. Ваши разработчики будут просто cp config.json.dist config.json после клонирования, а затем редактировать его по мере необходимости, делая последующие коммиты, не беспокоясь о случайном изменении файла по умолчанию или забывая постоянно включать и выключать некоторые настройки.

Вы могли бы даже отредактировать свой код для поиска сначала config.json, а если его не существует, вернитесь к config.json.dist. Это позволило бы разработчикам работать даже без выполнения шага копирования. (Вот как работает PHPUnit.)

0 голосов
/ 26 марта 2019

Для этой цели можно использовать git update-index --skip-worktree FILE.

Это похоже на --assume-unchanged, но, в отличие от --assume-unchanged, - это не просто непредсказуемый трюк с производительностью .

Для отмены --skip-worktree эффектов и снятия флажка используйте --no-skip-worktree.

Downsides

  • Этот флаг предназначен только для локального хранилища и не может быть передан на удаленный компьютер. Таким образом, каждый клон, которому необходимо игнорировать файл, должен делать это вручную.
  • Вы можете столкнуться с конфликтами при переключении на другую ветку или использовании git pull. ( подробнее )
0 голосов
/ 09 мая 2018

Вы можете использовать git update-index --assume-unchanged <file>

И если вы хотите отследить его снова, используйте git update-index --no-assume-unchanged <file>

...