Mam wiele projektów w moim rozwiązaniu .Net. Chciałbym wykluczyć wszystkie foldery „bin / Debug” i „bin / Release” (i ich zawartość), ale nadal zawierać sam folder „bin” i zawarte w nim dll.
.gitignore z „bin /” ignoruje foldery „Debug” i „Release”, ale także wszelkie pliki dll zawarte w folderze „bin”.
„bin / Debug” lub „bin / Release” w pliku .gitignore nie wyklucza katalogów, chyba że w pełni kwalifikuję wzorzec ignorowania jako „Solution / Project / bin / Debug” - czego nie chcę robić tak jak ja będę musiał uwzględnić ten pełny wzorzec dla każdego projektu w moim rozwiązaniu, a także dodać go do wszystkich dodanych nowych projektów.
Jakieś sugestie?
Odpowiedzi:
Czy próbowałeś symboli wieloznacznych?
W wersji 1.8.2 git możesz także używać
**
znaku wieloznacznego, aby dopasować dowolny poziom podkatalogów:źródło
**
. Powinien być już naprawiony. linkMożesz użyć .gitignore na najwyższym poziomie, aby zignorować wszystkie katalogi w projekcie o tej samej nazwie. Na przykład:
Powinno to zostać zaktualizowane natychmiast, aby było widoczne, gdy wykonujesz status git. Upewnij się, że te katalogi nie zostały jeszcze dodane do git, ponieważ zastąpi to ignorowanie.
źródło
$GIT_DIR/.git/info/exclude
pliku OPs .git rm -rf DirectoryName/
Pytanie nie jest prośbą o ignorując wszystkie podkatalogi, ale nie mogłem znaleźć nigdzie odpowiedzi, więc będę pisać posty
*/*
.źródło
git add
zignorować katalogu i wszystkich plików we wszystkich podkatalogach tego katalogu. Próbowałemdirname/
,dirname/*
,dirname/**
,dirname/*/*
, nawet w rozpaczydirname/*/*/*
,dirname/*/*/*/*
,dirname/*/*/*/*/*
.*/*
ignoruje wszystkie podkatalogi, ale nie pliki w bieżącym katalogu. Zignorowanie określonego podkatalogu jest normalnym użyciem gitignore.dirname
,dirname/
idirname/*
cała praca dla mnie. Czy coś w tym katalogu zostało już zatwierdzone?.git
katalog między próbami, agit init
następniegit add --all .
(próbowałem też bez--all
), używając 1.9.4.msysgit.1. Każdy niepusty podkatalog w moim nazwanym katalogu jest dodawany do indeksu (zaznaczone w TortoiseGit igit status
). Brak istotnych linie.gitignore
zaczynające!
ale musi być jakiś konflikt. Rozwiązany na razie przez usunięcie folderów podczasadd
. Zgadnij, że będzie to wymagało nieco więcej wykopalisk, aby dostarczyć niezbędnych informacji do zdiagnozowania. Dziękuję za zapewnienie mnie, że nie źle rozumiem składnię.Wszystkie powyższe odpowiedzi są prawidłowe, ale myślę, że nie wspomniano o tym, że po dodaniu pliku z tego katalogu do repozytorium nie można zignorować tego katalogu / podkatalogu zawierającego ten plik (git zignoruje tę dyrektywę ).
Aby zignorować już dodane pliki, uruchom
W przeciwnym razie musisz najpierw usunąć wszystkie pliki z katalogu docelowego repozytorium - a następnie możesz zignorować ten folder.
źródło
Oprócz umieszczania poprawnych wpisów w pliku .gitignore, jeśli próbujesz zignorować coś, co już zostało dodane do repozytorium, musisz to zrobić
git rm -r /path/to/dir
i zatwierdzić, zanim dodasz katalog do pliku .gitignore. W przeciwnym razie git zignoruje jedynie twoją dyrektywę ignorowania.źródło
Jedynym sposobem, w jaki mogłem to zrobić na mojej maszynie, było zrobienie tego w ten sposób:
Zwróć uwagę, w jaki sposób musisz wyraźnie zezwalać na zawartość dla każdego poziomu, który chcesz uwzględnić. Więc jeśli mam podkatalogi 5 głęboko pod tematami, nadal muszę to przeliterować.
To jest z komentarza @ Yarin tutaj: https://stackoverflow.com/a/5250314/1696153
Były to przydatne tematy:
Też próbowałem
i
**/wp-content/themes/**
lub
/wp-content/themes/**/*
To też nie działało dla mnie. Dużo śladów i błędów!
źródło
Aby wykluczyć zawartość i podkatalogi:
Aby po prostu wykluczyć wszystkie podkatalogi, ale wziąć zawartość, dodaj „/”:
źródło
Aby zignorować wszystkie podkatalogi, możesz po prostu użyć:
Działa to od wersji 1.8.2 git.
źródło
Ogólnym sposobem zignorowania wszystkich podfolderów przy jednoczesnym śledzeniu plików znajdujących się w
/bin
katalogu byłoby dodanie następującego wiersza do pliku .gitignore projektu:Jeśli chcesz zignorować tylko określone nazwane podfoldery, możesz:
nb. jeśli
bin
katalog nie znajduje się w katalogu głównym twojego projektu (obok pliku .gitignore), to zamiast np.bin/*/*
możesz potrzebowaćpath/to/bin/*/*
źródło