Mam taką strukturę katalogów:
.git/
.gitignore
main/
...
tools/
...
...
W katalogu głównym i narzędziach oraz w każdym innym katalogu, na dowolnym poziomie, może znajdować się katalog „bin”, który chcę zignorować (i chcę też zignorować wszystko pod nim). Próbowałem każdego z tych wzorów w .gitignore, ale żaden z nich nie działa:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Czy ktoś może mi pomóc? Pierwszy wzorzec (ten, który moim zdaniem powinien działać) działa dobrze, jeśli to zrobię:
/main/**/bin/**/*
Ale nie chcę mieć wpisu dla każdego katalogu najwyższego poziomu i nie chcę modyfikować .gitignore za każdym razem, gdy dodam nowy.
Jest to w systemie Windows przy użyciu najnowszej msysgit.
EDYCJA: jeszcze jedno, są pliki i katalogi, które mają w swoich nazwach podciąg „bin”, nie chcę, aby były ignorowane :)
**
Składnia wydaje teraz (marzec 2013 git 1.8.2) oficjalnie udokumentowane zobacz moją odpowiedź poniżejOdpowiedzi:
Przed wersją 1.8.2
**
nie miał żadnego specjalnego znaczenia w.gitignore
. Począwszy od 1.8.2 git obsługuje**
zero lub więcej podkatalogów (patrz informacje o wersji ).Sposobem na zignorowanie wszystkich katalogów zwanych bin gdziekolwiek poniżej bieżącego poziomu w drzewie katalogów jest użycie
.gitignore
pliku ze wzorem:Na
man
stronie znajduje się przykład ignorowania katalogu nazwanegofoo
za pomocą analogicznego wzorca.Edycja: Jeśli masz już w katalogu git jakieś foldery bin, których nie chcesz już śledzić, musisz je jawnie usunąć. Git nie przestanie śledzić ścieżek, które są już śledzone tylko dlatego, że teraz pasują do nowego
.gitignore
wzorca. Wykonaj folder usuń ( rm ) tylko z indeksu ( --cached ) rekurencyjnie ( -r ). Przykład wiersza poleceń dla folderu głównego bin:źródło
**
w.gitignore
plikach (źródło: 1.8.2 changelog )bin
taki sambin/
?bin
zignorują pliki o nazwie bin, natomiastbin/
dotyczą katalogów o nazwie bin.gitignore
O swoim śnie wydaje się być:na najwyższym poziomie.
źródło
Myślę, że warto wspomnieć o początkujących gitach:
Więc jeśli chcesz, aby add zignorował niektóre katalogi w lokalnym repozytorium (które już istnieją) po edycji .gitignore, chcesz uruchomić to w katalogu głównym
Zasadniczo „odświeży” twoje lokalne repozytorium i rozpuści ignorowane pliki.
Widzieć:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
źródło
git add -A
dla moich zatwierdzeń, czy mogę tego użyć? i czy mogę również zamienić kropkę na -A w pierwszym wierszu?**
Nigdy właściwie pracował wcześniej, ale ponieważ git 1.8.2 (marzec, 8 2013) , wydaje się być wyraźnie wymienione i obsługiwane:W twoim przypadku oznacza to, że ta linia może być teraz obsługiwana:
źródło
dopasowuje zarówno duże, jak i małe litery
źródło
[B]in/
być jedyną wielką literąBin
ignorować tylko folder i zezwolićbin
na git?[B]in/
popełni zarównoBin
ibin
.Bin/
!bin/
Nie widziałem tego tutaj wymienionego, ale wydaje się, że wielkość liter ma znaczenie. Po zmianie na / Bin pliki zostały zignorowane zgodnie z oczekiwaniami.
źródło
bin
nie byłoBin
.[Bb]in
rozwiąże problem, ale ... Oto obszerniejsza lista rzeczy, które należy zignorować (przykładowa lista GitExtension):źródło
Jeśli szukasz świetnego
.gitignore
pliku globalnego dla dowolnego rozwiązania Visual Studio (.NET) - zalecamy użycie tego: https://github.com/github/gitignore/blob/master/VisualStudio.gitignoreAFAIK ma najbardziej kompleksowy
.gitignore
dla projektów .NET.źródło
Krok 1: Dodaj następującą treść do pliku .gitignore.
Krok 2: Upewnij się, że zadziałają
Jeśli problem nadal występuje, to dlatego, że ustawienia .gitignore mogą ignorować tylko pliki, które nie były pierwotnie śledzone . Jeśli niektóre pliki zostały już uwzględnione w systemie kontroli wersji, modyfikacja .gitignore jest nieprawidłowa. Aby całkowicie rozwiązać ten problem, musisz otworzyć Git Bash lub konsolę Menedżera pakietów (patrz zrzut ekranu poniżej), aby uruchomić następujące polecenia w folderze głównym repozytorium.
Wtedy problem zostanie całkowicie rozwiązany.
źródło
Dosłownie żadna z odpowiedzi nie działała dla mnie; jedynym, który działał dla mnie był (w systemie Linux):
źródło
bin
w podkatalogach?Jako zawiadomienie;
Jeśli uważasz, że
.gitignore
nie działa w żaden sposób (więc dodałeś do niegofoo/*
folder, alegit status
nadal wyświetla zawartość zmodyfikowanych folderów lub coś w tym stylu), możesz użyć tego polecenia;git checkout -- foo/*
źródło
w wersji 2.13.3 i nowszych zapisywanie tylko bin w pliku .gitignore powinno zignorować bin oraz wszystkie jego podkatalogi i pliki
źródło
Dodanie ** / bin / do pliku .gitignore pomogło mi (uwaga: folder bin nie został dodany do indeksu).
źródło
Jeśli wzorzec wewnątrz
.gitignore
kończy się ukośnikiem/
, znajdzie tylko dopasowanie do katalogu.Innymi słowy,
bin/
dopasuje katalogbin
i ścieżki pod nim, ale nie będzie pasował do zwykłego pliku ani dowiązania symbolicznegobin
.Jeśli wzór nie zawiera ukośnika , tak jak w
bin
Git traktuje go jako wzór globu powłoki (zachłanny). Więc najlepiej byłoby użyć prostego/bin
.bin
nie byłoby najlepszym rozwiązaniem tego konkretnego problemu.źródło
/
?W moim przypadku kodowanie pliku gitignore było problematyczne, sprawdź, czy jest to UTF-8
źródło