Проблема с игнорированием подкаталога в 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, еще не разрешили подобные проблемы. Спасибо.
Ответы
Ответ 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 в целевой папке, просто выберите "Удалить и добавить в список игнорирования".