Игнорировать изменения после добавления git-f
Я только что скачал (не клонированный!) КАКЕФП 2.2.4.
Каталог содержит файл .gitignore
:
# only the relevant part here
/app/Config
/app/tmp
Теперь я выполнил эту команду, потому что каталоги (и их начальное содержимое) Config и tmp в противном случае никогда бы не были зафиксированы:
git add -f Config
git add -f tmp
У меня нет проблем с каталогом tmp, потому что там не изменяются файлы, будут созданы только новые файлы!
Напротив, мне пришлось изменить некоторые файлы (например, конфигурация базы данных) в папке Config.
Но Git теперь хочет, чтобы я git add
снова изменил эти файлы!
Как я могу игнорировать эти изменения?
Я также мог бы повторно запустить все репозиторий Git, потому что я не слишком много создавал/изменял.
Мои модификации CakePHP для решения актуальной проблемы
Мой новый *.gitignore
файл для CakePHP:
# removed: /app/Config/
# start edit
/app/Config/*
!/app/Config/Schema/
!/app/Config/*.default.php
# end edit
/app/tmp
/lib/Cake/Console/Templates/skel/tmp/
/plugins
/vendors
/build
/dist
.DS_Store
/tags
Я также добавил все файлы в /app/Config с . по умолчанию:
Acl.ini.default.php.
Acl.default.php.
Bootstrap.default.php.
Core.default.php.
База данных.php.по умолчанию --> database.default.php
Email.php.по умолчанию --> database.default.php
Редактировать: Лучше иметь *.default.php
, чем *.php.default
, потому что это предотвращает вывод файла в браузер в случае сбоя mod_rewrite
(хотя это очень маловероятно).
1 answers
Git не отслеживает каталоги; только файлы. Поэтому, когда вы запускаете git add -f Config
, git просто добавляет все файлы в рабочее дерево под Config
, а не сам каталог. Поскольку эти файлы затем отслеживаются Git (таким образом, переопределяя правила игнорирования), их изменение приведет к тому, что Git сочтет рабочее дерево грязным.
Эти правила для Config
и tmp
существуют в файле .gitignore CakePHP, потому что Git может эффективно игнорировать весь каталог; нет необходимости явно создавать пустой каталоги, так как CakePHP предположительно создаст их автоматически.
Если по какой-то причине вы хотите, чтобы Git знал, что там должен быть каталог, но игнорировал его содержимое, то вы можете добавить файл .gitignore внутри Config
и tmp
, содержащий правило *
, которое скажет ему игнорировать все, что находится в этом каталоге. Однако, поскольку файл .gitignore существует, он будет поддерживать сам каталог.
Обновление: Если вы хотите сохранить "значение по умолчанию" конфигурация в Git, которая должна быть настроена для каждой рабочей копии, вам лучше зафиксировать файл конфигурации шаблона под другим именем, который можно скопировать в новый (игнорируемый) файл, когда хранилище клонировано и заполнено параметрами конфигурации, зависящими от среды.
На мой взгляд, сами конфигурационные файлы не должны находиться под контролем версий, поскольку они должны быть адаптированы к среде, в которой используется рабочая копия, поэтому таким образом следует сохранять копии шаблонов кажется естественным решением (это то, что делает Wordpress).