Как разрешить экземплярам подкаталога gitignore отслеживать файл, игнорируя все остальное?
Возможный дубликат:
Git - Белые файлы в сложной структуре каталогов
Я хотел бы иметь только файлы треков git для репозитория, названные, например. SOURCES
, в то время как все остальное игнорируется (например, дерево файлов pdf, в котором каждый файл SOURCES
перечисляет свое происхождение). Самый простой снимок был бы
*
!SOURCES
в .gitignore
. Однако исключение, например, A/SOURCES
переопределяется *
, требуя, чтобы я использовал git add -f
. Как можно изменить .gitignore
, чтобы игнорировать все, кроме файлов с именем SOURCES
, не требуя принудительного добавления?
изменить Решение опубликовано здесь не будет, поскольку структура каталогов не исправлена, то есть новые каталоги, содержащие файл SOURCES
, должны не нужно добавлять к .gitignore
вручную...
Ответы
Ответ 1
Вы не можете достичь этого, используя только .gitignore
Git не отслеживает пути. Он отслеживает только объекты (~ файлы).
Итак, почему бы вам не перевернуть таблицы:
git add -f -- */*/SOURCES */SOURCES
или
shopt -s globstar
git add -f -- **/SOURCES
Или вытащите большие пушки:
git add -f -- $(find -type f -name SOURCES)
или даже
find -type f -name SOURCES -exec git add -f -- {} \+
Неподтвержденная идея Возможно, что-то подобное может быть связано с фиксацией pre-commit?
Обновить Идея для большей автоматизации:
Добавьте это в .git/config
[alias]
ac = "!_() { git add -f -- */*/SOURCES && git commit \"[email protected]\"; }; _"
Теперь вы можете просто сказать
git commit -m 'like you usually work'
и он автоматически добавит */*/SOURCES