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

Проблема с игнорированием подкаталога в git

У меня есть проект maven с несколькими модулями, который имеет глубину около 5 уровней.
Теперь я перехожу к git, и я вижу, что большая часть содержимого папки target фиксируется git как "Нестационарные изменения".
Я много искал и искал SO, но не смог найти ответ о том, как заставить git игнорировать дерево каталогов целиком в папке target.
Мой .gitignore, который находится в корне проекта, выглядит следующим образом:

.project  
.classpath
.settings/
target/

Странно, что файлы .class, которые находятся где-то под деревом target, игнорируются приведенными выше определениями, но такие файлы, как MANIFEST.MF, pom.properties или мои собственные файлы свойств приложения, которые расположены где-то в дереве каталогов target не игнорируются.
Я читал Git Игноры и цели Maven, но это решение, похоже, не работает для меня.
Я также могу сказать, что когда я пытаюсь добавить правило target/*, это ничего не меняет и когда я заменяю target/ на target/*, тогда файлы .class также выглядят как нестационарные. Я бы очень признателен за некоторые рекомендации, поскольку мне кажется маловероятным, что орды людей, использующих git и maven, еще не разрешили подобные проблемы. Спасибо.

4b9b3361

Ответ 1

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

git rm -r target/

(Если в вашем проекте есть модули, вам необходимо включить путь вниз к целевому целевому модулю:
git rm -r parent_project/module_name/target/)

Если вы хотите удалить каталог из репозитория, но не с диска, вы можете использовать опцию --cached:

git rm -r --cached target/

В любом случае вы должны зафиксировать это удаление в репозитории (вы можете сделать это в одной и той же фиксации с добавлением target/ к .gitignore, если хотите).

Ответ 2

target
target/*

Добавьте эти строки в gitignore, чтобы игнорировать целевой файл и все файлы внутри цели. Это не должно отслеживать эту папку и ее содержимое больше.

Ответ 3

В качестве альтернативы, используя tortoisegit в целевой папке, просто выберите "Удалить и добавить в список игнорирования".