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.