Czy istnieje sposób, aby powiedzieć gitowi, aby dołączał tylko określone pliki zamiast ignorować określone pliki?

Moje programy zazwyczaj generują ogromne pliki wyjściowe (~1 GB), których nie chcę tworzyć w repozytorium git. Więc zamiast być w stanie zrobić

git add .

Muszę zrobić coś takiego

git add *.c *.cc *.f *.F *.C *.h *.cu
Co jest trochę uciążliwe...

Czuję się dość pewny, że mógłbym napisać szybki skrypt Perla, który zawiera zawartość katalogu .gitignore, a następnie usunąć pliki na podstawie .plik gitinclude (lub o podobnej nazwie), ale wydaje się to trochę zbyt hakerskie. Czy istnieje lepszy sposób?

 132
Author: Jakub Narębski, 2009-08-14

4 answers

Nie musiałem sam tego próbować, ale z mojej lektury TFM wygląda na to, że zanegowany wzór zrobiłby to, co chcesz. Możesz zastąpić wpisy w .gitignore z późniejszymi negacjami. Można więc zrobić coś takiego:

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

Aby zignorować wszystko .pliki c z wyjątkiem niestandardowych.c i wszystko zaczynające się na "frob_"

 172
Author: T.E.D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-14 19:23:26

Utwórz .plik gitignore w repozytorium i chcesz śledzić tylko pliki c i ignorować wszystkie inne pliki, a następnie dodaj do niego następujące linie....

*
!*.c

'* ' zignoruje wszystkie pliki

I ! czy negate pliki będą do ignored....so tutaj prosimy git, aby nie ignorował plików C....

 64
Author: Vineel Kumar Reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-01 06:26:53

Najlepsze rozwiązanie, aby to osiągnąć

Utwórz .gitignore plik w repozytorium root, a jeśli chcesz dołączyć tylko .c Plik następnie należy dodać poniższe linie do .gitignore Plik

*.*
!*.c

To będzie obejmować wszystkie .c Plik z katalogu i podkatalogu rekurencyjnie.

using

*
!*.c

nie będzie działać na wszystkich wersjach Gita.

Testowane na

Git Wersja 2.12.2.okna.2

 3
Author: Smaranjit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-25 06:28:37

Użyj tego w gitignore

*.*
!*.c

Testowane z git w wersji 2.7.4

 1
Author: alpha_989,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-09 20:16:47