git кроме подкаталога и его файлов игнорируемого каталога
Я использую git для управления своими источниками, у меня есть несколько файлов в следующих путях:
Debug/a.dll
Debug/b.exe
Debug/c.png
Debug/Pic/a.png
Debug/Pic/b.bmp
Debug/Pic/c.dll
Я хочу игнорировать эти файлы:
Debug/a.dll
Debug/b.exe
Debug/c.png
Но чтобы исключить эти файлы из игнорирования:
Debug/Pic/a.png
Debug/Pic/b.bmp
Debug/Pic/a.dll
3 ответа
Git использовать .gitignore
игнорировать или отслеживать файлы в игнорируемых путях.
В вашем случае вам нужно добавить это к вашему .gitignore
файл в корневом каталоге вашего проекта. Создать файл, если он не существует
#List of files to ignore
Debug/*
#List of files to exclude from the ignored pattern above
!Debug/Pic
!Debug/Pic/*
Что входит в содержание этого образца .gitignore
Debug/*
- Это будет игнорировать все файлы в папке отладки !Debug/Pic/*
- !
это специальный символ в этом случае, говорящий git исключить данный шаблон из игнорируемых путей.
Другими словами:
Мы "сказали" git игнорировать все файлы под Debug
папку, но включить все файлы под Debug/Pic/
папка.
Как обычно, с исключением в gitignore
правило помнить:
Невозможно повторно включить файл, если исключен родительский каталог этого файла (
*
)
(*
: если в git 2.? не соблюдены определенные условия, см. ниже)
поскольку Debug/*
будет игнорировать папку Debug/Pic/
, попытка исключить содержимое этой папки не будет работать (!Debug/Pic/*
) с мерзавцем 2.6 или меньше.
Вы должны сначала исключить папку. Тогда его содержание.
Debug/*
!Debug/Pic/
!Debug/Pic/*
Обратите внимание, что в git 2.9.x/2.10 (середина 2016 года?) Может оказаться возможным повторно включить файл, если родительский каталог этого файла будет исключен, если в пути не будет подстановочного знака.
Nguy Thn Thái Ngọc Duy ( pclouds
) пытается добавить эту функцию:
- commit 506d8f1 для git v2.7.0, возвращен в commit 76b620d git v2.8.0-rc0
- commit 5e57f9c git v2.8.0-rc0,... отменён (!) в коммите 5cee3493 git 2.8.0-rc4.
Так в git 2.9+, чтобы заново включить папку Debug/Pic/
, ты можешь сделать:
/Debug
!Debug/Pic
Вы можете сначала добавить подкаталог, а затем игнорировать содержащий каталог:
git add Debug/Pic
git ignore Debug
Это будет иметь побочный эффект - не показывать добавление новых файлов в Debug/Pic, но вы можете просто добавить их вручную с помощью 'git add -f', чтобы обойти предупреждение.gitignore.