Есть ли способ сказать git включать только определенные файлы вместо игнорирования определенных файлов?

Мои программы обычно генерируют огромные выходные файлы (~ 1 ГБ), которые я не хочу выполнять резервное копирование в репозиторий git. Поэтому вместо того, чтобы делать

git add .

Мне нужно сделать что-то вроде

git add *.c *.cc *.f *.F *.C *.h *.cu

что немного громоздко...

Я уверен, что могу написать быстрый файл script ls содержимое каталога в .gitignore, а затем удалить файлы на основе файла .gitinclude(или какого-то подобного имени), но это кажется немного слишком хакерским. Есть ли лучший способ?

Ответ 1

Мне не нужно было самому это пробовать, но из моего чтения TFM похоже, что обратный шаблон будет делать то, что вы хотите, Вы можете переопределять записи в .gitignore с более поздними отрицательными записями. Таким образом, вы можете сделать что-то вроде:

*.c
!frob_*.c
!custom.c

Чтобы игнорировать все файлы .c, кроме custom.c, и все, начиная с "frob _"

Ответ 2

создайте файл .gitignore в вашем репозитории, и вы хотите отслеживать только файлы c и игнорировать все остальные файлы, а затем добавить в него следующие строки....

*
!*.c

'*' будет игнорировать все файлы

и! будет игнорировать файлы для игнорирования.... поэтому здесь мы просим git не игнорировать файлы c....

Ответ 3

Лучшее решение для достижения этого

создать .gitignore файл в репозитории root, и если вы хотите включить только файл .c, то вам нужно добавить строки ниже в .gitignore файл

*.*
!*.c

это будет включать весь файл .c из каталога и подкаталога рекурсивно.

используя

*
!*.c

не будет работать во всех версиях git.

Проверено на

git версия 2.12.2.windows.2

Ответ 4

Используйте это в gitignore

*.*
!*.c

с версией git версии 2.7.4