Ignorowanie katalogów w repozytoriach Git w systemie Windows

1105

Jak mogę zignorować katalogi lub foldery w Git, używając msysgit w systemie Windows?

sf.
źródło
Czy chcesz, aby folder pamięci podręcznej został całkowicie wykluczony z repozytorium, czy tylko jego zawartość?
Gareth
1
Zgaduję, że OP ma wiele katalogów pamięci podręcznej, których zawartość należy zignorować, ale chce się upewnić, że te katalogi zostaną utworzone dla każdego, kto klonuje repozytorium.
Mark Longair,
@Gareth: skoro puste foldery nie są śledzone za pomocą git, jeśli zawartość zostanie zignorowana, folder również będzie, prawda?
eckes
3
Wspomniałem tylko, że ponieważ niektóre osoby używają ukrytych plików (zwykle .gitkeep) do wskazania katalogu, który powinien być przechowywany
Gareth
2
czy /na końcu wiadomo, że jest to katalog, który powinien zignorować?
Charlie Parker

Odpowiedzi:

1594

Utwórz plik o nazwie .gitignorew katalogu swojego projektu. Zignoruj ​​katalogi, wprowadzając nazwę katalogu do pliku (z dołączonym ukośnikiem):

dir_to_ignore/

Więcej informacji tutaj .

gulasz
źródło
130
W poleceniu cmd systemu Windows możesz użyć polecenia „edytuj .gitignore” lub „notatnika .gitignore”, aby utworzyć poprawny plik.
Joey Green,
44
Możesz też użyć polecenia „touch .gitignore” z poziomu wiersza polecenia git bash w systemie Windows, aby utworzyć poprawnie nazwany plik, który z kolei można edytować za pomocą notatnika lub podobnego ...
SGB
39
Lub po prostu utwórz plik o nazwie .gitignore. w Eksploratorze i edytuj go za pomocą notatnika (kropka końcowa zostanie usunięta). W ten sposób nie musisz używać wiersza polecenia.
P. Galbraith,
6
Lub możesz vim .gitignore z terminala. :)
MollyCat,
34
Lub, co zaskakująco nie zostało wspomniane, nawet jeśli jest to najszybszy sposób, po prostu wpisz „echo folder_to_ignore >> .gitignore” w konsoli.
Godsmith,
205

Domyślnie Eksplorator Windows wyświetla się, .gitignoregdy tak naprawdę jest to nazwa pliku .gitignore.txt.

Git nie będzie używać .gitignore.txt

Nie można zmienić nazwy pliku na .gitignore, ponieważ Eksplorator Windows uważa, że ​​jest to plik typu gitignore bez nazwy.

Rozwiązanie inne niż wiersz poleceń:

Możesz zmienić nazwę pliku na „.gitignore”. , i utworzy „.gitignore”
fal mózgowych
źródło
46
To działa? Zawsze po prostu mówiłem ludziom, aby otworzyli notatnik iw oknie dialogowym Zapisz jako wpisz nazwę pliku otoczoną podwójnymi cudzysłowami, więc na przykład ".gitignore"zapisuje ją bez automatycznego dodawania rozszerzenia.
Arrowmaster
9
Schludny. Uwzględnienie okresu końcowego działa. Explorer usuwa ostatni okres, w wyniku czego powstaje plik o nazwie „.gitignore”. Myślę, że metoda cytatów jest jednak czystsza i rzadziej powoduje niespodzianki.
Triynko
4
Lub w oknie dialogowym Zapisz jako zmień typ pliku na „Wszystkie pliki ( . )” - wtedy system Windows nie doda żadnego rozszerzenia.
Osakaebebeb
5
lub w git bash po prostu wpisz „touch .gitignore” w swoim folderze
Rayjax
3
".gitignore."- To świetna sztuczka! Zawsze miałem też problemy .htaccess...
Obmerk Kronen 19.04.16
105

Wydaje się, że do ignorowania plików i katalogów istnieją dwa główne sposoby:

  1. .gitignore

    • Umieszczanie .gitignorepliku w katalogu głównym repozytorium poza .gitfolderem (w systemie Windows upewnij się, że widzisz prawdziwe rozszerzenie pliku, a następnie dodaj .gitignore.(z punktem na końcu, aby zrobić puste rozszerzenie pliku))
    • Wykonanie konfiguracji globalnej ~/.gitignore_globali uruchomienie w git config --global core.excludesfile ~/.gitignore_globalcelu dodania tego do konfiguracji Git

    Uwaga: pliki śledzone wcześniej można wyśledzić przez uruchomienie git rm --cached filename

  2. Wyłączenie repozytorium - w przypadku plików lokalnych, które nie muszą być współużytkowane, wystarczy dodać do pliku wzór pliku lub katalog .git/info/exclude. Te reguły nie są zatwierdzone, więc nie są widoczne dla innych użytkowników . Więcej informacji tutaj .

Aby zrobić wyjątki na liście ignorowanych plików, zobacz to pytanie .

Vairis
źródło
36
dobra robota, wskazując git rm --cached <filename>. Absolutnie krytyczne dla repozytoriów, które istniały PRZED stworzeniem.gitignore
MaurerPower
2
git rm --cached <nazwa_pliku> naprawił problem, który miałem z
.gitignore
1
Tak, git rm - buforowana nazwa pliku jest absolutnie niezbędna. Doprowadzało mnie to do szaleństwa, ponieważ git wciąż wyświetlał pliki, które wyraźnie powiedziałem, że jestem ignorowany (utworzony gitignore po pierwszym zatwierdzeniu). Dziękuję Ci bardzo!
Potaito,
1
Rozwiązałem mój problem. Git śledził folder dostawcy w moim repozytorium laravel, mimo że dodałem folder dostawcy w gitignore. Wielkie dzięki.
Jayant
44

Miałem pewne problemy utworzeniu pliku w Eksploratorze Windows z .początku.

Obejściem problemu było przejście do powłoki poleceń i utworzenie nowego pliku za pomocą „edit”.

sf.
źródło
2
lub po prostu dodaj dodatkową .na końcu, aby odkrywca przestał myśleć, że .gitignoreto rozszerzenie. Następnie przy wejściu ta kropka bez rozszerzenia zostaje zjedzona i zostajesz z .gitignore TL; DR: spróbuj nazwać to .gitignore.=> .gitignore
kończysz na
43

Aby poinstruować Git, aby ignorował niektóre pliki lub foldery, musisz utworzyć .gitignoreplik.

Ale w Eksploratorze Windows musisz podać nazwę pliku. Po prostu nie można utworzyć pliku z rozszerzeniem. Sztuczka polega na tym, że utwórz pusty plik tekstowy i przejdź do wiersza polecenia i zmień nazwę pliku na .gitignore:

ren "New Text Document.txt" .gitignore

Teraz otwórz plik w swoim ulubionym edytorze tekstu i dodaj nazwy plików / folderów, które chcesz zignorować. Można również użyć symboli wieloznacznych, takich jak ten: *.txt.

Mahes
źródło
15
Lub po prostu: echo dir_to_ignore /> .gitignore
Oliver
2
Lub type nul > .gitignoreutworzyć pusty plik
Castro Roy
Lub po prostu wywołaj plik, .gitignore.gdy rozszerzenia plików nie są ukryte w Eksploratorze Windows
Vairis
22

Jeśli chcesz zachować folder, a nie znajdujące się w nim pliki, po prostu umieść plik „.gitignore” w folderze z „*” jako zawartością. Ten plik spowoduje, że Git zignoruje całą zawartość z repozytorium. Ale .gitignorezostaną uwzględnione w twoim repozytorium.

$ git add path/to/folder/.gitignore

Jeśli dodasz pusty folder, otrzymasz tę wiadomość (.gitignore to ukryty plik)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

Dlatego użyj „-f”, aby wymusić dodanie:

$ git add path/to/folder/.gitignore -f
sensorario
źródło
19

W systemie Windows istnieje dodatkowy haczyk z ukośnikami. Z wyłączeniem jednego katalogu w .gitignore z

dir_to_exclude /

prawdopodobnie będzie działać, ale z wyłączeniem wszystkich katalogów z

/

powoduje problemy, gdy masz w katalogu nazwy plików ze spacjami (np. my file.txt): Git Bash unika tych spacji ukośnikiem odwrotnym (jak my\ file.txt), a Git dla Windows nie rozróżnia między /i \.

Aby wykluczyć wszystkie katalogi, lepiej użyj:

** /

Dwie kolejne gwiazdki oznaczają zawartość katalogu.

żałosny
źródło
15

Również w \.git\infokatalogu projektów znajduje się plik wykluczający, który jest faktycznie tym samym co .gitignore(myślę). Możesz dodawać pliki i katalogi, aby je zignorować.

Si3
źródło
Podoba mi się to podejście, po prostu nie mogę dogadać się ze ścieżką, chcę zignorować folder w głównym repozytorium, jak to zrobić?
Shimmy Weitzhandler
Ale czy nie powinieneś zostawiać plików w .git w spokoju (manipulować zawartością za pomocą oficjalnych środków)?
Peter Mortensen
13

Na wypadek, gdybyś musiał wykluczyć podkatalogi, możesz użyć **symbolu wieloznacznego, aby wykluczyć dowolny poziom podkatalogu.

**/build/output/Debug/
Jedz w Joes
źródło
12

Aby zignorować cały katalog w Git, najprostszym sposobem jest dołączenie pliku .gitignore do katalogu docelowego, który zawiera po prostu „*”.

Ilustrujący przykład

Przykładowy system

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

Cel

  • zignoruj ​​zawartość / dirB /

Najwyższy poziom .gitignore (/root/.gitignore)

  • To jest, gdzie idzie Twoja standardowa informacja gitignore

Zignorowany katalog .gitignore (/root/dirB.gitignore)

  • Ten plik czyta tylko „*”, a katalog jest całkowicie ignorowany, sam i wszystkie pliki!

I to takie proste :)

J-Dizzle
źródło
10

Gdy wszystko inne zawiedzie, spróbuj edytować plik

/.git/info/exclude

i dodając katalogi, które chcesz na końcu pliku, w ten sposób:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/

Dodałem foldery „zasoby” i „skompilowane” do listy plików i katalogów do zignorowania.

Xedret
źródło
1
Używam Atomu w systemie Windows 10. Działa! Dzięki stary!
Putu De
Wypróbowałem wszystkie pozostałe w mojej obecnej konfiguracji i to była moja ostateczna ostateczna odpowiedź.
Xedret
9

W systemie Unix:

touch .gitignore

W systemie Windows:

echo > .gitignore

Te polecenia wykonane w terminalu utworzą .gitignoreplik w bieżącej lokalizacji.

Następnie po prostu dodaj informacje do tego .gitignorepliku (na przykład za pomocą Notepad ++), które pliki lub foldery powinny zostać zignorowane. Zapisz swoje zmiany. Otóż ​​to :)

Więcej informacji: .gitignore

fvolodimir
źródło
9

Możesz utworzyć plik „.gitignore” z zawartością:

*
!.gitignore

Mi to pasuje.

Claudionor Oliveira
źródło
2
To najlepsza odpowiedź, przynosi także dodatkowe korzyści we wdrażaniu i utrzymaniu projektu.
Nitin ...
Kim jest „simples” ?
Peter Mortensen
8

Mam problemy z pobraniem .gitignorepliku przez system Git w systemie Windows. $GIT_DIR/info/excludePlik zawsze wydaje się działać, choć.

Wadą tego podejścia jest jednak to, że pliki w $GIT_DIRkatalogu nie są uwzględniane przy zameldowaniu, a zatem nie są udostępniane.

ps $GIT_DIRto zwykle ukryty folder o nazwie.git

Jason
źródło
Tak, git w systemie Windows jest naprawdę wybredny w kwestii .gitignore - lokalny plik wykluczenia robi to, czego potrzebuję. Dzięki!
andersop
6

Zakładam, że problem polega na tym, że twoje drzewo robocze wygląda jak:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

... z tym, .gitignoreco opisujesz. To da ci git statuswynik jak:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

... jeśli te index.htmlpliki nie zostały jeszcze dodane do repozytorium. (Git widzi, że w katalogach pamięci podręcznej znajdują się niezauważone pliki, ale zgłasza tylko katalogi). Aby to naprawić, upewnij się, że index.htmlpliki zostały dodane i zatwierdzone :

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

... a wtedy twój git statuswyglądać będzie następująco:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
nothing added to commit but untracked files present (use "git add" to track)

(Oczywiście, że też chcesz popełnić .gitignore. Byłem po prostu leniwy w tym przypadku testowym.)

Mark Longair
źródło
1
Prawdopodobnie nie chcą popełnić .gitignore szczególnie jak jesteś prawdopodobnie chcesz śledzić zmiany do niego i tak jest twój zespół (jeśli pracujesz z jednym). Zobacz stackoverflow.com/a/767213/123033
Dave Everitt
2
@Dave Everitt: Właśnie dlatego powiedziałem: „Oczywiście, że też chcesz popełnić .gitignore”.
Mark Longair
6

W systemach Windows i Mac, jeśli chcesz zignorować folder o nazwie Flower_Data_Folder w bieżącym katalogu, możesz:

echo Flower_Data_Folder >> .gitignore

Jeśli jest to plik o nazwie data.txt:

echo data.txt >> .gitignore

Jeśli jest to ścieżka taka jak „Data / passwords.txt”

echo "Data/passwords.txt" >> .gitignore. 
Olusola Omosola
źródło
2

Miałem podobne problemy. Pracuję na łańcuchu narzędzi systemu Windows ze współdzielonym repozytorium z facetami z Linuksa i chętnie tworzą pliki o takich samych (z wyjątkiem wielkości liter) nazwach w danym folderze.

Efektem jest to, że mogę sklonować repozytorium i natychmiast mieć dziesiątki „zmodyfikowanych” plików, które, jeśli się zaloguję, spowodują spustoszenie.

W systemie Windows ustawiono rozróżnianie wielkości liter i Git nie ignoruje wielkości liter, ale nadal nie działa (najwyraźniej w wywołaniach interfejsu API Win32).

Jeśli gitignore plików, to muszę pamiętać, aby nie śledzić pliku .gitignore.

Ale znalazłem tutaj dobrą odpowiedź:

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html

Chris Aaaaa
źródło
Link wydaje się być uszkodzony (najpierw przekierowuje do wersji „https”): „Błąd bezpiecznego połączenia. Wystąpił błąd podczas połączenia z archive.robwilkerson.org. PR_END_OF_FILE_ERROR”
Peter Mortensen
0

Po prostu utwórz .gitignoreplik w folderze projektu, a następnie dodaj w nim nazwę folderu, na przykład:

frontend/node_modules
DINA TAKLIT
źródło