Как остановить Git от отслеживания каких-либо изменений в файле из этой фиксации?
У меня есть файл конфигурации базы данных, который имеет значения по умолчанию, которые не имеют значения. Однако любые изменения этого файла будут содержать конфиденциальную информацию, которая не должна отслеживаться в репо.
Я бы хотел, чтобы будущие притяжения репозитория Git включали версию по умолчанию, но игнорировали любые изменения, сделанные любым пользователем.
Следующее сохраняет локальную конфигурацию, но нажимает удаление на репо, что приводит к проблемам для будущих выдержек.
cat "app/dir/config.file" >> .gitignore
git rm --cached app/dir/config.file
Следующее выполняет задание, но не останавливается после нажатия на репо.
git update-index --assume-unchanged app/dir/config.file
Это похоже на общее требование для контроля версий вокруг важной информации, но я не могу найти решение.
Ответы
Ответ 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 теперь полностью игнорирует эти файлы.
Теперь они могут быть отредактированы, и вы можете иметь локальные и производственные версии. ПРИМЕЧАНИЕ. Возможно, вам придется повторить все эти шаги в первый раз и на производственной установке. Пока это хорошо сработало для меня.