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?


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


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.


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.

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.

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?


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

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 !!


„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

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.


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.


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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.