Global Git ignoruje

841

Chcę skonfigurować Git do globalnego ignorowania niektórych plików.

Dodałem .gitignoreplik do mojego katalogu domowego ( /Users/me/) i dodałem do niego następujący wiersz:

*.tmproj

Ale to nie ignoruje tego typu plików. Masz pojęcie, co robię źle?

Łagodny Fuzz
źródło
7
Możesz także sprawdzić sugestie GitHub dotyczące ignorowania - help.github.com/articles/ignoring-files ; mają repozytorium typowych wzorców ignorowania
drzaus
6
Możesz także rozważyć użycie .gitignore w poszczególnych projektach. W przeciwnym razie, jeśli (lub ktoś inny) sklonujesz projekt w nowym systemie, będziesz musiał za każdym razem odtworzyć globalny plik wykluczeń i konfigurację.
Stan Kurdziel
25
Pliki ignorowalne tworzone przez projekt powinny znajdować się w pliku .gitignore projektu, pliki ignorowalne tworzone przez urządzenie na komputerze powinny znajdować się w globalnym pliku .gitignore (np. Pliki tymczasowe edytora / IDE i tym podobne).
Pylinux
2
Katalogi środowiska wirtualnego Python są częstym przypadkiem użycia wpisów w moim globalnym lub lokalnym pliku wykluczeń.
Gulasz
10
@Pilinux Właściwie, na git-scm , osobiste IDE i specyficzne dla przepływu pracy rzeczy mogą przejść do nie śledzonego pliku .git/info/excludew repozytorium, więc niekoniecznie musi to być plik globalny. Ponadto domyślnym i automatycznym globalnym plikiem gitignore jest $HOME/.config/git/ignore.
Acumenus,

Odpowiedzi:

1421

Musisz core.excludesfileskonfigurować globalny plik konfiguracyjny, aby wskazywał ten globalny plik ignorowania.

na przykład

* nix lub Windows git bash:

git config --global core.excludesfile '~/.gitignore'

Windows cmd:

git config --global core.excludesfile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesfile "$Env:USERPROFILE\.gitignore"

W systemie Windows ustawiono lokalizację C:\Users\{myusername}\.gitignore. Możesz sprawdzić, czy wartość konfiguracji jest poprawna, wykonując:

git config --global core.excludesfile

Wynikiem powinna być rozszerzona ścieżka do profilu użytkownika .gitignore. Upewnij się, że wartość nie zawiera nierozwiniętego %USERPROFILE%ciągu.

Ważne : powyższe polecenia ustawią tylko lokalizację pliku zignorowania, którego użyje git. Plik musi być nadal ręcznie utworzony w tej lokalizacji i wypełniony listą ignorowanych. (z komentarza muruge )

Możesz przeczytać o poleceniu na https://help.github.com/articles/ignoring-files/#create-a-global-gitignore

CB Bailey
źródło
2
Tak długo, jak nie ma go w twoim HEADlub w indeksie, nie powinno mieć znaczenia, czy plik był kiedyś śledzony, czy nie. Może to być pomocne, jeśli dodać wyjście git status, git config core.excludesfiledo Twojego pytania.
CB Bailey,
2
Czy mogę użyć #na początku wierszy w środku, ~/.gitignoreaby dodać komentarze w pliku globalnego ignorowania?
Dror
9
Najnowsze wersje oficjalnego zestawu narzędzi Git Windows używają zamiast tego składni * nix; jeśli ten wiersz nie działa, spróbuj zamiast tego * nix.
Andy Jones,
9
Nie byłem w stanie uruchomić tego za pomocą %USERPROFILE%zmiennej. Musiałem wprowadzić pełną ścieżkę do pliku przy użyciu separatorów katalogu * nix. np. core.excludesfile C: /Users/User/.gitignore
Vince
21
Nie można go uruchomić ze zmienną% USERPROFILE%. Musiałem użyć git config --global core.excludesfile '~ / .gitignore' w systemie Windows, aby ustawić go w lokalizacji C: / users / {moja nazwa użytkownika} /. Gitignore. Również powyższe polecenie ustawi tylko lokalizację pliku zignorowania, którego użyje git. Plik musi być nadal ręcznie utworzony w tej lokalizacji i wypełniony listą ignorowanych.
potężny
301

Przed rekonfiguracją globalnego pliku wykluczeń możesz sprawdzić, do czego jest on aktualnie skonfigurowany, używając tego polecenia:

git config --get core.excludesfile

W moim przypadku, kiedy go uruchomiłem, zobaczyłem, że mój plik wykluczeń globalnych został skonfigurowany do

~ / .gitignore_global
i było tam już kilka rzeczy wymienionych. Dlatego w przypadku zadanego pytania warto najpierw sprawdzić istniejący plik wykluczeń i dodać do niego nową maskę pliku.

yanni
źródło
2
to działa świetnie. Skonfiguruj globalny plik gitignore jak zwykle; jeden wpis w wierszu.
Maarten Hartman,
237

Chociaż inne odpowiedzi są poprawne, ustawiają globalną wartość konfiguracji, podczas gdy istnieje domyślna lokalizacja git dla globalnego pliku ignorowania git:

*nic:

~/.config/git/ignore

Windows:

%USERPROFILE%\git\ignore

Może być konieczne utworzenie gitkatalogu i ignorepliku, ale następnie możesz umieścić globalne ignorowanie w tym pliku i to wszystko!

Źródło

To, w którym pliku należy umieścić wzorzec, zależy od tego, w jaki sposób ma zostać użyty.

  • Wzorce, które użytkownik chce, aby Git ignorował we wszystkich sytuacjach (np. Kopie zapasowe lub pliki tymczasowe generowane przez wybrany edytor użytkownika) zazwyczaj przechodzą do pliku określonego przez core.excludesFileużytkownika ~/.gitconfig. Jego domyślna wartość to $ XDG_CONFIG_HOME / git / ignore. Jeśli $ XDG_CONFIG_HOME nie jest ustawiony lub jest pusty, zamiast niego zostanie użyty $ HOME / .config / git / ignore.
Steve Jorgensen
źródło
1
To jest świetne; Nie wiedziałem o tym ... ale czy to nie jest wygenerowany plik? Czy można go zastąpić podczas aktualizacji / ponownej instalacji?
danielsdesk,
1
Uważam, że plik jest tworzony / modyfikowany przez uruchomienie niektórych gitpoleceń. Ponieważ jest to plik ustawień w katalogu każdego użytkownika, nie sądzę, że należy go kiedykolwiek zastąpić.
Steve Jorgensen
1
Zgadzam się, że to powinna być zaakceptowana odpowiedź, jednak nie znalazłem tego w -t̶h̶e̶ ̶d̶o̶c̶u̶m̶e̶n̶t̶a̶t̶i̶o̶n̶ artykule pomocy ( help.github.com/articles/ignoring-files )
AVProgrammer
1
@AVProgrammer Właśnie edytowałem odpowiedź, aby odzwierciedlić zmianę w organizacji dokumentu źródłowego.
Steve Jorgensen
7
Wygląda na to, że w systemie Windows ścieżka też jest ~/.config/git/ignore.
suriv
40

Aby utworzyć globalny gitignore od podstaw:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. Pierwszy wiersz zmienia katalog na C:/Users/User
  2. Następnie tworzysz pusty plik z .gitignore_globalrozszerzeniem
  3. I wreszcie ustawienie globalnego ignorowania dla tego pliku.
  4. Następnie powinieneś otworzyć go za pomocą jakiegoś notatnika i dodać potrzebne reguły ignorowania.
Phoera
źródło
18

Od tutaj .

Jeśli utworzysz plik w swoim repozytorium o nazwie .gitignore, git użyje swoich reguł podczas sprawdzania plików do zatwierdzenia. Zauważ, że git nie zignoruje pliku, który był już śledzony przed dodaniem reguły do ​​tego pliku, aby go zignorować. W takim przypadku plik musi być nieśledzony, zwykle z:

git rm --cached filename

Czy to twoja sprawa?

LaGrandMere
źródło
Próbuję ignorować globalnie, co się nie dzieje !!
Łagodny Fuzz,
@MildFuzz w systemie Linux core.excludesfileplik wydaje się interpretowany inaczej niż .gitignoreplik. Jeśli chcesz zignorować cały katalog, po prostu wpisz nazwę katalogu jak .vscode/zamiast.vscode/*
Aspiring Dev
11

Jeśli korzystasz z systemu Unix, możesz rozwiązać problem za pomocą dwóch poleceń. Gdzie pierwsza inicjalizacja konfiguracji, a druga zmiana pliku z plikiem do zignorowania.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore
Purkhalo Alex
źródło
10
  1. Utwórz plik .gitignore w swoim katalogu domowym
touch ~/.gitignore
  1. Dodaj do niego pliki ( foldery nie są rozpoznawane )

Przykład

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

# but you can do this
.vscode/*
build/*
  1. Sprawdź, czy git ma już globalny gitignore
git config --get core.excludesfile
  1. Powiedz gitowi, gdzie jest plik
git config --global core.excludesfile '~/.gitignore'

Voila !!

Prerak Mann
źródło
„foldery nie są rozpoznawane” - To po prostu źle, foldery działają dobrze…
TobiX
7

Pamiętaj, że uruchomienie polecenia

git config --global core.excludesfile '~/.gitignore'

po prostu skonfiguruje plik globalny, ale NIE utworzy go. W systemie Windows sprawdź .gitconfigplik Users w katalogu i edytuj go zgodnie z własnymi preferencjami. W moim przypadku jest tak:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore
mouse md
źródło
3

Jestem w stanie zignorować .tmprojplik, dołączając jeden .tmprojlub jeden *.tmprojz moich /users/me/.gitignore-globalplików.

Pamiętaj, że nazwa pliku .gitignore-globalnie jest .gitignore. Nie działało przez włączenie .tmprojlub *.tmprojw pliku o nazwie .gitignorew /users/mekatalogu.

Sri Sankaran
źródło
4
Nie ma znaczenia, jak nazwiesz swój globalny plik ignorowania, o ile pasuje on do core.excludesfilekonfiguracji.
CB Bailey,
Ach! Dobry punkt @CharlesBailey. Jednak może to być coś, co pisarz może chcieć sprawdzić. Powodem .tmprojplik nie jest uzyskiwanie ignorowane może być fakt, że użytkownika excludesfilenie być .gitignore.
Sri Sankaran
Myślę, że myślał, że użytkownik będzie wystarczająco inteligentny, aby to zrozumieć.
WORMSS
2

W tym celu należy utworzyć plik wykluczenia. Sprawdź tę istotę, która jest dość oczywista.

Aby rozwiązać swoje pytanie chociaż, być może trzeba albo de-indeksowania .tmprojplik (jeśli już dodana do indeksu) z git rm --cached path/to/.tmprojlub git addi commitswój .gitignoreplik.

Nic
źródło
Staram się to robić na całym świecie, nie tylko na repo
Mild Fuzz,
Tak, z tym właśnie się połączyłem. Byłem trochę zmieszany pierwotnym pytaniem. Zrobiłeś to git rm --cached?
Nic
tak, próbowałem tego. Wydaje mi się, że zastosowałem się do wszystkich zalecanych rad! czego mi brakuje?
Łagodny Fuzz,
Zgodnie z sugestią dodam twój status git i wykluczę informacje do pytania :)
Nic
2

na podsystem Windows dla Linuksa musiałem przejść do korzenia podsystemu przez cd ~/następnie touch .gitignorea następnie zaktualizować konfigurację globalną gitignore tam.

Mam nadzieję, że to komuś pomoże.

bboydflo
źródło
0

Jeśli używasz VSCODE, możesz uzyskać to rozszerzenie do obsługi zadania za Ciebie. Obserwuje Twój obszar roboczy za każdym razem, gdy zapisujesz swoją pracę, i pomaga automatycznie ignorować pliki i foldery określone w ustawieniach vscode. Ignoreit .sonson (rozszerzenie vscode)

marcdomain
źródło