.gitignore исключить конкретный файл
Я пытаюсь использовать .gitignore
файл, чтобы исключить templates.js
, расположенный в папке public/app/
. Мой файл .gitignore
выглядит следующим образом:
/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js
Но когда я проверяю Git Gui, в нем все еще отображается файл templates.js
. Как я могу специально исключить файл с помощью .gitignore
?
Ответы
Ответ 1
В отличие от того, что может указать название "игнорировать". .gitignore
обрабатывается только при git add
файлах: другими словами, файл, уже добавленный в репозиторий (index of the), не будет исключен на основе .gitignore
.
Сначала вы лучше измените .gitignore
так, чтобы файл больше не добавлялся. Добавьте следующую строку в файл .gitignore
:
public/app/template.js
Затем вам нужно исключить файл из репозитория. Вероятно, вы не хотите удалять файл из вашей файловой системы, это можно сделать с помощью
git rm --cached public/app/template.js
Флаг --cached
гарантирует, что файл не будет удален из вашей файловой системы. (Если это не важно, вы можете использовать git rm public/app/template.js
, , но это приведет к удалению файла).
Фон
Причина .gitignore
не используется проактивно, потому что иногда вы можете переопределить .gitignore
. Скажем, например, вы не хотите отслеживать файлы *.log
, вы можете указать *.log
в .gitignore
. Но если есть определенный, который вы хотите отслеживать, вы можете добавить git add -f some.log
. Флаг -f
заставляет git
добавить файл.
Ответ 2
Как только файл был добавлен в репозиторий git один раз, он будет продолжать отслеживаться независимо от того, указан ли он в файле .gitignore или нет.
Я предполагаю, что вы ранее добавили файл template.js, и в этом случае он будет продолжать отслеживать изменения, пока вы не удалите его из репозитория. После удаления файла из репозитория он будет правильно проигнорирован с помощью файла .gitignore.
Способ удаления файла из репозитория git (командной строки) без его удаления
git rm --cached FILENAME
Затем, как только вы сделаете это и попытаетесь зафиксировать файл в своем gitignore, он этого не сделает.
Обратите внимание, что если вы специально добавили файл, который у вас есть в вашем gitignore, ваше ручное добавление файла переопределит gitignore.
Ответ 3
Если вы уже отслеживаете файл (git add
на нем и git commit
), .gitignore
не поможет.
Я считаю, что вы хотите остановить отслеживание файла, а затем использовать .gitignore
, чтобы исключить его. Чтобы остановить отслеживание файла, но сохраните файл, используйте:
git rm --cached <file>
Ответ 4
В этом случае вы можете остановить отслеживание templates.js
с помощью
git rm --cached public/app/templates.js
Как объяснили другие, .gitignore
игнорирует только добавляемый контент. Например, если вы часто используете git add .
и имеете templates.js
в своем .gitignore
, то git не добавит его.