Jak mówi tytuł, czy można dodać „pliki bez kropek” do pliku gitignore?
Wyobrażam sobie, że załatwiłoby to wszystkie uciążliwe pliki bez rozszerzeń.
Jak mówi tytuł, czy można dodać „pliki bez kropek” do pliku gitignore?
Wyobrażam sobie, że załatwiłoby to wszystkie uciążliwe pliki bez rozszerzeń.
Odpowiedzi:
Możesz wypróbować kombinację podobną do:
*
!/**/
!*.*
Ta gitignore
reguła wykluczenia ( zanegowany wzorzec ) powinna ignorować wszystkie pliki, z wyjątkiem tych z rozszerzeniem.
Jak wspomniano poniżej przez Mad fizyka , zasada jest:
Nie można ponownie dołączyć pliku, jeśli katalog nadrzędny tego pliku jest wykluczony. (*
)
(*
: chyba że są spełnione określone warunki w git 2.?+, patrz poniżej)
Dlatego jest !/**/
to ważne (rekurencyjne wyświetlanie białych list folderów nadrzędnych), jeśli chcemy wyświetlać pliki na białej liście.
Wspomniałem o tej samej zasadzie w podobnych przypadkach:
Jak komentuje Jakub Narębski , możesz nie chcieć ignorować wszystkich plików bez rozszerzeń.
Moja rada:
.gitignore
jak pokazano powyżej: już wersjonowane pliki nie zostaną zignorowane (nawet jeśli nie mają rozszerzenia). Wszystkie inne zostaną zignorowane.W przypadku przyszłych plików bez rozszerzeń, które chcesz zaktualizować:
git add -f -- myFile
Zauważ, że w przypadku git 2.9.x / 2.10 (połowa 2016?) Może być możliwe ponowne dołączenie pliku, jeśli katalog nadrzędny tego pliku jest wykluczony, jeśli nie ma symbolu wieloznacznego w ścieżce ponownie dołączonej .
Nguyễn Thái Ngọc Duy ( pclouds
) próbuje dodać tę funkcję:
Jednak ponieważ jedną z zasad ponownego włączenia była:
Część katalogu w regułach ponownego włączania musi być dosłowna (tj. Bez symboli wieloznacznych)
To i tak by tu nie zadziałało.
.gitignore
byłoby **
i !**.*
. Wiem, że to nie ma znaczenia, jeśli gwiazdka jest umieszczona z przodu, ale jest bardziej wyraźna i brzmi lepiej, jak muszle radzą sobie z symbolami wieloznacznymi ...
!Makefile
. Z rozszerzeniem . Pamiętaj, że miałem problemy z tym rozwiązaniem w Git 1.7.1, podczas gdy działało dobrze w 1.9.0. W moim przypadku dodanie pliku w katalogu głównym działało dobrze, ale dodanie pliku z rozszerzeniem w podkatalogu było wyświetlane jako ignorowane. Wydaje się, że dzieje się tak, ponieważ wersja 1.7.1 jeszcze nie obsługiwała tego **
wzorca, zobacz tutaj !
**
został dodany w Git 1.8.2
. Czy jest jakaś wada w stosunku do używania !*/
zamiast !/**/
?
*
!*/
!*.*
*
mówi gitowi, aby wszystko ignorował.
!*/
następnie anuluje ignorowanie wszystkiego, co jest katalogiem. To jest kluczowe.
!*.*
anuluje ignorowanie wszystkich plików z rozszerzeniem.
Bez !*/
reguły katalogi bez znaku .
w nazwie nie byłyby wymienione i żaden z żądanych plików nie zostałby dodany poza katalog główny.
Dla odniesienia przeczytaj te dwie sekcje w wyróżniającej się dokumentacji .gitignore :
Opcjonalny przedrostek „!” co neguje wzorzec; każdy pasujący plik wykluczony przez poprzedni wzorzec zostanie ponownie uwzględniony. Nie można ponownie dołączyć pliku, jeśli katalog nadrzędny tego pliku jest wykluczony. Git nie wyświetla wykluczonych katalogów ze względu na wydajność, więc wszelkie wzorce na zawartych plikach nie mają wpływu, bez względu na to, gdzie są zdefiniowane. Umieść ukośnik odwrotny („\”) przed pierwszym znakiem „!” dla wzorców zaczynających się od dosłownego „!”, na przykład „! ważne! .txt”.
Jeśli wzorzec kończy się ukośnikiem, jest usuwany do celów poniższego opisu, ale znalazłby tylko dopasowanie do katalogu. Innymi słowy, foo / dopasuje katalog foo i ścieżki pod nim, ale nie będzie pasował do zwykłego pliku lub dowiązania symbolicznego foo (jest to zgodne z ogólnym sposobem działania pathspec w Git).
W moich folderach jest dużo plików z *.c, *.h, *.txt, *.csv
rozszerzeniami itp. Oraz plików binarnych bez żadnego rozszerzenia. Musiałem więc zignorować wszystkie pliki execpt *.c,*.h
i .gitignore
, Więc to działa dla mnie, z .gitignore
przykładu:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore
README
,LICENSE
lubCOPYING
,INSTALL
,Makefile
itd., Chociaż zawsze można wymusić dodać je, a następnie są śledzone