Mam plik gitignore, który powoduje, że git ignoruje *.dllpliki, i takie właśnie zachowanie chcę. Jeśli jednak chcę wyjątek (tj. Mieć możliwość popełnienia foo.dll), jak mogę to osiągnąć?
fwiw, dziadek duplikatów odpowiedzi na ten temat - taki, na który powinieneś się przyjrzeć - prawdopodobnie sprawi, że .gitignore zignoruje wszystko oprócz kilku plików - bardzo regularną aktywność i kilka dobrych odpowiedzi. Jestem szczególnym fanem tej odpowiedzi , która wydaje się jasna i dokładna.
Opcjonalny przedrostek! co neguje wzór; każdy pasujący plik wykluczony przez poprzedni wzór zostanie ponownie dołączony. Jeśli negowany wzorzec pasuje, zastąpi to źródła wzorców o niższym priorytecie.
Zobacz także odpowiedź na formularzu @Matiss Jurgelis - to ważny dodatek
Dan
7
Czy mogę dodać wyjątek do gitignore mojego projektu, a nie do mojego globalnego gitignore? Na przykład, jeśli chcę dołączyć wszystkie biblioteki DLL do katalogu? Mój gitignore_global ma *.dllw nim i gitignore mojego projektu ma, !Libs/*.dllale wydaje się, że to nie działa.
Joel Kinzel,
1
@jkinz, powinieneś spróbować !Libs/**/*.dll.
Rosberg Linhares
@RosbergLinhares Lub !**/Libs/*.dll, w zależności od struktury folderów.
JAB
2
Dzięki, ale na komputerze Mac dodanie komentarza w tym samym wierszu co !foo.dllunieważniło polecenie. Jeśli dodam komentarz do osobnego wiersza, zadziała.
Giacomo
261
Git ignoruje foldery, jeśli piszesz:
/js
ale nie można dodać wyjątków, jeśli wykonasz:
!/js/jquerylub !/js/jquery/lub!/js/jquery/*
Musisz napisać:
/js/*
i tylko wtedy możesz z wyjątkiem takich podfolderów
Opcjonalny przedrostek! co neguje wzór; każdy pasujący plik wykluczony przez poprzedni wzór zostanie ponownie dołączony. Jeśli negowany wzorzec pasuje, zastąpi to źródła wzorców o niższym priorytecie.
Jeśli pracujesz z Visual Studio, a Twój binplik .dll znajduje się w folderze, musisz dodać wyjątek dla samego folderu bin, zanim będziesz mógł dodać wyjątek dla pliku .dll. Na przykład
Jest tak, ponieważ domyślny .gitignoreplik programu Visual Studio zawiera wzorzec ignorowania dla[Bbin]/
Ten wzorzec zapycha wszystkie foldery bin (i w konsekwencji ich zawartość), co powoduje, że każda próba dołączenia zawartości jest zbędna (ponieważ sam folder jest już ignorowany).
Udało mi się ustalić, dlaczego mój plik nie był wyłączony z działania
Od wersji Git 2.7.0 Git weźmie pod uwagę wyjątki. Z oficjalnych informacji o wersji:
Pozwól późniejszym „! / Abc / def” zastąpić wcześniejsze „/ abc”, które pojawia się w tym samym pliku .gitignore, aby ułatwić wyrażenie „wszystko w katalogu / abc jest ignorowane, z wyjątkiem ...”.
Odpowiedzi:
Posługiwać się:
Z gitignore :
źródło
*.dll
w nim i gitignore mojego projektu ma,!Libs/*.dll
ale wydaje się, że to nie działa.!Libs/**/*.dll
.!**/Libs/*.dll
, w zależności od struktury folderów.!foo.dll
unieważniło polecenie. Jeśli dodam komentarz do osobnego wiersza, zadziała.Git ignoruje foldery, jeśli piszesz:
ale nie można dodać wyjątków, jeśli wykonasz:
!/js/jquery
lub!/js/jquery/
lub!/js/jquery/*
Musisz napisać:
i tylko wtedy możesz z wyjątkiem takich podfolderów
źródło
!/js/jquery/xyzlib
Nie zostanie zignorowany .../js/*
,!/js/jquery
,/js/jquery/*
,!/js/jquery/xyzlib
? Wydaje się to dość zabawnym sposobem ...Możesz po prostu
git add -f path/to/foo.dll
..gitignore
ignoruje tylko pliki do zwykłego śledzenia i podobne rzeczygit add .
źródło
-f
mówi git, aby.gitignore
Aby wykluczyć wszystko z katalogu, ale z niektórych podkatalogów, wykonaj następujące czynności:
Źródło: https://gist.github.com/444295
źródło
Po prostu dodaj
!
przed regułą wykluczenia.Według strony podręcznika gitignore :
źródło
!foo.dll
w .gitignore, lub (za każdym razem!)git add -f foo.dll
źródło
Jeśli pracujesz z Visual Studio, a Twój
bin
plik .dll znajduje się w folderze, musisz dodać wyjątek dla samego folderu bin, zanim będziesz mógł dodać wyjątek dla pliku .dll. Na przykładJest tak, ponieważ domyślny
.gitignore
plik programu Visual Studio zawiera wzorzec ignorowania dla[Bbin]/
Ten wzorzec zapycha wszystkie foldery bin (i w konsekwencji ich zawartość), co powoduje, że każda próba dołączenia zawartości jest zbędna (ponieważ sam folder jest już ignorowany).
Udało mi się ustalić, dlaczego mój plik nie był wyłączony z działania
z okna Git Bash. To zwróciło
[Bbin]/
wzór.źródło
Rozwiązanie zależy od relacji między regułą git ignore a regułą wyjątku:
Pliki / Pliki na różnych poziomach lub Pliki / Podfoldery: możesz to zrobić:
źródło
Od wersji Git 2.7.0 Git weźmie pod uwagę wyjątki. Z oficjalnych informacji o wersji:
https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt
źródło