Rozumiem, że plik .gitignore maskuje określone pliki z kontroli wersji Gita. Mam projekt (LaTeX), który generuje wiele dodatkowych plików (.auth, .dvi, .pdf, logi itp.) W trakcie działania, ale nie chcę, aby były one śledzone.
Wiem, że mógłbym (może powinienem) sprawić, aby wszystkie te pliki zostały umieszczone w osobnym podfolderze w projekcie, ponieważ mogłem wtedy po prostu zignorować folder.
Czy jest jednak jakiś możliwy sposób na utrzymanie plików wyjściowych w katalogu głównym drzewa projektu i użycie .gitignore do zignorowania wszystkiego oprócz plików, które śledzę za pomocą Git? Coś jak
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
Odpowiedzi:
źródło
wp/
), Ale NIE chcę ignorować niektórych plików głęboko w tym folderze (npwp/path/to/some/location/*
.). Jedynym sposobem, w jaki udało mi się go uruchomić, było zrobienie tegogit add -f wp/path/to/some/location/*
!*/
wyjątku simonta!*/
robi różnicę w moich daremnych próbach udaremnienia.gitignore
pliku do pracy. Dziękuję Ci bardzo.Jeśli chcesz zignorować całą zawartość katalogu oprócz jednego pliku w nim, możesz napisać parę reguł dla każdego katalogu na ścieżce pliku. Np. .Gitignore, aby zignorować folder pippo, z wyjątkiem pippo / pluto / paperino.xml
.gitignore
źródło
foo
ifoo/*
to nie to samo. Aby to zadziałało, musisz użyćfoo/*
folderu podstawowegoChcesz użyć
/*
zamiast*
lub*/
w większości przypadkówUżywanie
*
jest poprawne, ale działa rekurencyjnie. Odtąd nie będzie przeglądać katalogów. Ludzie zalecają!*/
ponowne użycie listy katalogów na białej liście, ale tak naprawdę lepiej umieścić na czarnej liście folder najwyższego poziomu/*
Powyższy kod będzie ignorować wszystkie pliki z wyjątkiem
.gitignore
,README.md
,folder/a/file.txt
,folder/a/b1/
ifolder/a/b2/
, a wszystko zawarte w tych ostatnich dwóch folderów. (A.DS_Store
i*.log
pliki będą ignorowane w tych folderach.)Oczywiście mógłbym zrobić np.
!/folder
Lub!/.gitignore
też.Więcej informacji: http://git-scm.com/docs/gitignore
źródło
.DS_Store
pliki nie są ignorowane, ale za pośrednictwem wiersza poleceń nie stanowi to problemu. Aby obejść ten problem, musiałem przejść**/.DS_Store
poniżej wszystkich innych zasad./*
następnie!/nested/folder/*
(lub odpowiednik!/nested/folder
), nie robiąc!/nested/
lub!/nested
pierwszy! (i prawdopodobnie/nested/*
pomiędzy). Sztuką do zapamiętania jest to, że jeśli umieszczasz na białej liście głęboko zagnieżdżony podfolder, musisz podbić dzieci w każdym podfolderze aż do góry, a te czarne listy zakończą się „gwiazdą ukośnika” ...Nieco bardziej szczegółowe:
Przykład: zignoruj wszystko
webroot/cache
- ale zachowajwebroot/cache/.htaccess
.Zwróć uwagę na ukośnik (/) po
cache
folderze:WADY
PRACUJE
źródło
źródło
Aby zignorować niektóre pliki w katalogu, musisz to zrobić w odpowiedniej kolejności :
Na przykład zignoruj wszystko w folderze „application” oprócz index.php i folder „config” zwróć uwagę na kolejność .
Najpierw musisz zaprzeczyć, że chcesz.
WADY
application/*
!application/config/*
!application/index.php
PRACUJE
!application/config/*
!application/index.php
application/*
źródło
git status
sprawdzeniu, czy zmiany.gitignore
działają zgodnie z oczekiwaniamigit status
nie powie ci, na co patrzy, a co jest ignorowane, to skąd możesz wiedzieć, czy to działa?Możesz użyć,
git config status.showUntrackedFiles no
a wszystkie nieśledzone pliki zostaną przed tobą ukryte. Zobaczman git-config
szczegóły.źródło
Aby wykluczyć folder z .gitignore, można wykonać następujące czynności.
Spowoduje to zignorowanie wszystkich plików / podfolderów
bower_components
z wyjątkiem/highcharts
.źródło
Istnieje wiele podobnych pytań na ten temat, więc opublikuję to, co napisałem wcześniej:
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
Miałem problem z podfolderem.
Nie działa:
Pracuje:
źródło
Próbowałem wszystkich odpowiedzi, jak podano tutaj powyżej, ale żadna nie działała dla mnie. Po przeczytaniu dokumentacji gitignore ( tutaj ) dowiedziałem się, że jeśli najpierw wykluczysz folder, nazwy plików w podfolderze nie będą indeksowane. Więc jeśli użyjesz wykrzyknika, aby dołączyć plik, nie zostanie on znaleziony w indeksie, a zatem nie zostanie uwzględniony w twoim kliencie git.
To był sposób na znalezienie rozwiązania. Zacząłem od dodania wyjątków dla wszystkich podfolderów w moim drzewie folderów, aby działało, co jest cholernie trudne. Potem mogłem skompresować szczegółową konfigurację do poniższej konfiguracji, co jest nieco sprzeczne z dokumentacją.
Działający .gitignore:
W rezultacie widzę w moim kliencie git, że tylko dwa pliki w folderze Pro / 3rdparty / domain / modulename / są przygotowywane do następnego zatwierdzenia i właśnie tego szukałem.
A jeśli chcesz dodać do białej listy kilka podfolderów tego samego folderu, zgrupuj linie wykrzykników poniżej instrukcji wykluczenia w następujący sposób:
W przeciwnym razie nie będzie działać zgodnie z oczekiwaniami.
źródło
Właśnie to zadziałało, chciałem zatwierdzić tylko jedną wtyczkę Cordova do repozytorium:
źródło
Wiem, że jestem spóźniony na przyjęcie, ale oto moja odpowiedź.
Jak powiedział @Joakim, aby zignorować plik, możesz użyć czegoś takiego jak poniżej.
ale jeśli plik znajduje się w zagnieżdżonych katalogach, trudno jest ręcznie napisać reguły.
Na przykład, jeśli chcemy pominąć wszystkie pliki w
git
projekcie, ale nie wa.txt
którym znajduje sięaDir/anotherDir/someOtherDir/aDir/bDir/cDir
. W takim razie nasze.gitignore
będzie coś takiegoPowyższy
.gitignore
plik pominie wszystkie katalogi i pliki oprócz!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt
Jak zapewne zauważyłeś, trudno jest zdefiniować te reguły.
Aby rozwiązać tę przeszkodę, stworzyłem prostą aplikację konsolową o nazwie git-do-not-ignore, która wygeneruje dla Ciebie reguły. Prowadziłem projekt w github ze szczegółową instrukcją.
Przykład użycia
Wynik
Istnieje również prosta wersja internetowa dostępna tutaj
Dziękuję Ci.
źródło
Mam Jquery i Angular z altany. Bower zainstalował je
Zminimalizowana jquery znajduje się w
dist
katalogu, a kątowy wangular
katalogu. Potrzebowałem tylko zminimalizowanych plików, aby zostać przydzielonym do github. Trochę ingerowałem w .gitignore i właśnie to udało mi się wyczarować ...Mam nadzieję, że ktoś może uznać to za przydatne.
źródło
Oto jak to zrobiłem:
Służy
gig status -u
do rekurencyjnego przeglądania pojedynczych plików w nieśledzonych katalogach -git status
zobaczysz tylko foldery, które mogą Cię oszukać, że wszystko w nich było śledzoneźródło
Proste rozwiązanie, jeśli chcesz zignorować wszystko oprócz kilku plików i kilku folderów głównych :
Magia jest w
/*
(jak opisano powyżej) ignoruje wszystko w folderze (głównym), ale NIE rekurencyjnie.źródło
Miałem też pewne problemy z negacją pojedynczych plików. Mogłem je zatwierdzić, ale moje IDE (IntelliJ) zawsze narzekało na ignorowane pliki, które są śledzone.
Wyświetliłem dwa pliki, które wykluczyłem w ten sposób:
W końcu to zadziałało dla mnie:
Kluczem była najpierw negacja folderu
typo3conf/
.Wydaje się również, że kolejność instrukcji nie ma znaczenia . Zamiast tego musisz jawnie zanegować wszystkie podfoldery, zanim będziesz mógł negować pojedyncze pliki w nim.
Folder
!public/typo3conf/
i zawartość folderupublic/typo3conf/*
to dwie różne rzeczy dla .gitignore.Świetny wątek! Ten problem martwił mnie na chwilę;)
źródło
Do tej pory nic mi nie działało, ponieważ próbowałem dodać jeden słoik z biblioteki lib.
To nie zadziałało:
To działało:
źródło
Mam to działa
źródło
Miał podobny problem jak OP, ale żadna z 10 najbardziej pozytywnych odpowiedzi nie zadziałała .
W końcu dowiedziałem się, co następuje
Zła składnia:
Prawidłowa składnia:
Objaśnienie ze strony podręcznika gitignore :
Rozszerzony przykład:
drzewo $.
$ cat .gitignore
$ git status --untracked-files --ignored
źródło
Sens
I prawdopodobnie obejmują:
Odniesienie
Od https://git-scm.com/docs/gitignore :
źródło
Wydaje mi się, że znalazłem coś, co zadziałało dla mnie, o czym nikt inny nie wspomniał.
Zasadniczo wydaje się, że neguje to ignorowanie podkatalogu, musisz mieć dwa wpisy, jeden dla samego podkatalogu,
!subdir/
a drugi dla wszystkich plików i folderów w nim zawartych!subdir/**/*
źródło