Git: .gitignore в подкаталогах
Я пытаюсь управлять своим neovim
"s init.vim
с мерзавцем Я хочу игнорировать все, кроме init.vim
в той же папке, что и .gitignore
и один kalisi.vim
в каталоге
/bundle/vim-airline/autoload/airline/themes/
Это мой ток .gitignore
:
# Ignore everything
*
# Exceptions
!.gitinore
!init.vim
!bundle
bundle/*
!bundle/vim-airline
bundle/vim-airline/*
!bundle/vim-airline/autoload
bundle/vim-airline/autoload/*
!bundle/vim-airline/autoload/airline
bundle/vim-airline/autoload/airline/*
!bundle/vim-airline/autoload/airline/themes
bundle/vim-airline/autoload/airline/themes/*
!bundle/vim-airline/autoload/airline/themes/kalisi.vim
Мои мысли по этому поводу:
Игнорировать все:
*
Кроме этого
.gitignore
:!.gitgnore
И
init.vim
в том же каталоге:!init.vim
Также не игнорируйте папку
bundle
:!bundle
Но все в этом
bundle/*
Кроме папки
vim-airline
:!vim-airline
Я думаю, вы поняли идею...
Но если я выполню git status
теперь только получить bundle/
как неотслеживаемый файл. Должен ли я получить kalisi.vim
или же bundle/vim-airline/autoload/airline/themes/kalisi.vim
?
Я надеюсь на более элегантный способ быть честным. Я также слышал о размещении нескольких .gitignore
находится в каталогах, но подкаталоги - это все проекты со своими собственными .gitignore
и это создаст огромный объем работы, чтобы только не игнорировать право .gitignore
,
Я надеюсь, что у кого-то есть идея, что делать, в настоящее время это только кажется bundle/
каталог отслеживается, но не содержание, которое я хочу...
1 ответ
Как я уже упоминал в разделе " Как добавить файлы без точек (все файлы без расширений) в файл gitignore? ", Есть одно правило, которое следует запомнить при .gitignore
:
Невозможно повторно включить файл, если родительский каталог этого файла исключен. ( †
)
(†
: если в git 2.7+ не выполнены определенные условия)
Это означает, что когда вы исключаете все (' *
'), вы должны в белый список папок (' /**/
'), прежде чем иметь возможность занести в белый список файлы.
# Ignore everything
*
# Exceptions
!.gitinore
!init.vim
!/**/
!bundle/vim-airline/autoload/airline/themes/kalisi.vim
LastSecondsToLive фактически использовал более простой подход:
Я создал коммит с
bundle/vim-airline/autoload/airline/themes/kalisi.vim
потом я поменял.gitignore
вернуться к:* !.gitinore !init.vim
игнорировать все, но так какbundle/vim-airline/autoload/airline/themes/kalisi.vim
уже отслежены, изменения будут отслеживаться в будущем.