Инверсия игнорирования в .gitignore?

Помогите разобраться с вопросом инверсии игнорирования.
#Игнорируем
admin/*
!admin/test.php
Инверсия сработала.

#Игнорируем всё
admin/*
!admin/controller/module/test.php
Инверсия НЕ сработала, почему?

Задача сделать так, чтобы в папке admin игнорировалось всё включая подпапки и файлы в подпапках кроме указанных файлов.

Предположим:
По такому пути: admin/controller/module/
лежат test.php, test1.php, test2.php
Необходимо всё игнорировать кроме test.php
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Проще принудительно добавить этот файл в отслеживаемые, чтобы не заморачиваться с игнорированием
git add -f “admin/controller/module/test.php”

Иначе придётся создавать сложную цепочку игноров и инверсий
admin/*
!admin/controller
admin/controller/*
!admin/controller/module
admin/controller/module/*
!admin/controller/module/test.php

Для отладки можно использовать команду
git check-ignore **/* # показать все проигнорированные файлы
admin/controller/level2.txt
admin/controller/module/level3.txt
admin/controller/module/test2.php
admin/level1.txt

git check-ignore -v **/*  # показать какие правила сработали
.gitignore:2:!admin/controller	admin/controller
.gitignore:3:admin/controller/*	admin/controller/level2.txt
.gitignore:4:!admin/controller/module	admin/controller/module
.gitignore:5:admin/controller/module/*	admin/controller/module/level3.txt
.gitignore:6:!admin/controller/module/test.php	admin/controller/module/test.php
.gitignore:5:admin/controller/module/*	admin/controller/module/test2.php
.gitignore:1:admin/*	admin/level1.txt
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
toxa82
@toxa82
/admin/* - это не игнорировать всё, это игнорировать только всё в указанной папке. Попробуйте /admin/** - это игнорировать всё независимо от уровня вложенности.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы