Подтвердить что ты не робот

Как остановить Git от отслеживания каких-либо изменений в файле из этой фиксации?

У меня есть файл конфигурации базы данных, который имеет значения по умолчанию, которые не имеют значения. Однако любые изменения этого файла будут содержать конфиденциальную информацию, которая не должна отслеживаться в репо.

Я бы хотел, чтобы будущие притяжения репозитория Git включали версию по умолчанию, но игнорировали любые изменения, сделанные любым пользователем.

Следующее сохраняет локальную конфигурацию, но нажимает удаление на репо, что приводит к проблемам для будущих выдержек.

cat "app/dir/config.file" >> .gitignore
git rm --cached app/dir/config.file

Следующее выполняет задание, но не останавливается после нажатия на репо.

git update-index --assume-unchanged app/dir/config.file

Это похоже на общее требование для контроля версий вокруг важной информации, но я не могу найти решение.

4b9b3361

Ответ 1

Как обычно, github имеет отличный документ для этого.

https://help.github.com/articles/ignoring-files#ignoring-versioned-files

Вот соответствующий фрагмент:

Игнорирование версий файлов

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

  • В терминале перейдите к местоположению вашего репозитория Git.
  • Выполните следующую команду в терминале:

git update-index --assume-unchanged path/to/file.txt

Как только вы помечаете такой файл, Git полностью игнорирует любые изменения на нем. Он никогда не появится при запуске git status или git diff, и он никогда не будет зафиксирован.

Чтобы сделать Git снова отслеживание файла, просто запустите:

git update-index --no-assume-unchanged path/to/file.txt.

Ответ 2

Не уверен, что это "лучший" способ... но то, что я нашел для работы, занимает несколько шагов.

Новый пример Laravel:

  • git init
  • Откорректируйте файлы .gitignore для получения желаемых результатов, например, не потеряв папки поставщиков.
  • Сделайте копию файлов, которые вы не хотите отслеживать (например:.htaccess,.env и т.д.)
  • git add .
  • git commit -m "first commit"
  • git rm --cached public /.htaccess, затем git rm --cached .env
  • git commit
  • git status должен показывать эти файлы как удаленные.
  • Теперь верните файл, который вы скопировали. Поскольку они имеют то же имя, что и вы сказали git удалить из отслеживания, git теперь полностью игнорирует эти файлы.

Теперь они могут быть отредактированы, и вы можете иметь локальные и производственные версии. ПРИМЕЧАНИЕ. Возможно, вам придется повторить все эти шаги в первый раз и на производственной установке. Пока это хорошо сработало для меня.