.gitignore не игнорирует файлы, когда я нажимаю с веткой - PullRequest
1 голос
/ 14 января 2012

У меня есть две ветки для моего проекта: основная и тестовая. когда я тестировал ветку, я редактировал файл .gitignore, который я добавил vendor / *. но по какой-то причине, когда я делаю git push origin test: master он все равно отправляет файлы вендору. есть ли способ очистить кеш или что-то в этом роде, чтобы убедиться, что он работает?

Заранее спасибо

1 Ответ

6 голосов
/ 14 января 2012

Я предполагаю, что файлы, отслеживаемые git в вашем каталоге vendor до заполнения .gitignore.

В этом случае поведение, которое вы видите, нормальное: индекс git знает об этих файлах и отслеживает их содержимое. Если вы заполняете свой .gitignore после того, как git отслеживает файл, будет слишком поздно, он будет игнорировать только те файлы, которые вы добавили с этого момента.

Что вам нужно сделать, так это разослать эти файлы (или «отследить»), чтобы индекс больше о них не знал - но без их удаления. Для этого используйте --cached параметр git rm:

git rm -r --cached vendor

Затем зафиксируйте результат. С этого момента и после заполнения .gitignore каталог vendor будет игнорироваться.

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

И, наконец, существует более разрушительный и очень опасный путь: git filter-branch. Но вы хотите сделать это в крайнем случае, и только если вам это действительно нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...