.gitignore исключить папку, но включить определенную подпапку - PullRequest
802 голосов
/ 04 апреля 2011

У меня есть папка application /, которую я добавляю в .gitignore. Внутри приложения / папки находится папка application / language / gr. Как я могу включить эту папку? Я пробовал это

application/
!application/language/gr/

без удачи ...

Ответы [ 15 ]

2 голосов
/ 24 декабря 2018

gitignore - Указывает намеренно не отслеживаемые файлы, которые следует игнорировать.

Пример для исключения всего, кроме определенного каталога foo / bar (обратите внимание на / * - без косой чертыподстановочный знак также исключает все, что находится в foo / bar ):

$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar

Еще один пример для WordPress :

!/wp-content
wp-content/*
!/wp-content/plugins
wp-content/plugins/*
!wp-content/plugins/my-awesome-plugin

Дополнительная информацияздесь: https://git -scm.com / docs / gitignore

2 голосов
/ 06 декабря 2018

Добавить дополнительный ответ:

!/.vs/              <== include this folder to source control, folder only, nothing else
/.vs/*              <== but ignore all files and sub-folder inside this folder
!/.vs/ProjectSettings.json <== but include this file to source control
!/.vs/config/       <== then include this folder to source control, folder only, nothing else
!/.vs/config/*      <== then include all files inside the folder

вот результат:

enter image description here

2 голосов
/ 03 декабря 2018

Я часто использую этот обходной путь в CLI, где вместо настройки моего .gitignore я создаю отдельный файл .include, в котором я определяю (под) каталоги, которые я хочу включить, несмотря на каталоги напрямую или .gitignore.

рекурсивно игнорируется

Таким образом, я дополнительно использую

git add `cat .include`

во время постановки перед совершением.

Для OP, я предлагаю использовать .include, который имеет следующие строки:

<parent_folder_path>/application/language/gr/*

ПРИМЕЧАНИЕ. Использование cat не позволяет использовать псевдонимы (в пределах .include) для указания $ HOME (или любого другого конкретного каталога). Это потому что линия homedir/app1/* при передаче в git add с помощью указанной выше команды отображается как git add 'homedir/app1/*', а заключенные в одинарные кавычки символы ('') сохраняют буквальное значение каждого символа в кавычках, предотвращая таким образом псевдонимы (такие как homedir ) от функционирования (см. Bash Single Quotes ).

Вот пример файла .include, который я использую в своем репо здесь .

/home/abhirup/token.txt
/home/abhirup/.include
/home/abhirup/.vim/*
/home/abhirup/.viminfo
/home/abhirup/.bashrc
/home/abhirup/.vimrc
/home/abhirup/.condarc
2 голосов
/ 21 мая 2018

В WordPress это помогло мне:

wp-admin/
wp-includes/
/wp-content/*
!wp-content/plugins/
/wp-content/plugins/*
!/wp-content/plugins/plugin-name/
!/wp-content/plugins/plugin-name/*.*
!/wp-content/plugins/plugin-name/**
0 голосов
/ 30 марта 2018

Я хотел отследить js-файлы jquery production, и это сработало:

node_modules/*
!node_modules/jquery
node_modules/jquery/*
!node_modules/jquery/dist/*
...