Jak zignorować rekursywnie wszystkie ukryte katalogi / pliki w repozytorium git?

132

Chciałbym, aby Git ignorował wszystkie ukryte pliki i katalogi. to znaczy

  • .aptitude
  • .ssh/
  • .bash_rc
  • config/.hidden

Czy istnieje prosta zasada, która obejmuje to bez konieczności dodawania każdego wpisu?

Poe
źródło

Odpowiedzi:

169

Po prostu dodaj wzór do .gitignore

.*
!/.gitignore

Edycja: Dodano .gitignoresam plik (ma znaczenie, jeśli nie został jeszcze zatwierdzony).

Daniel Böhmer
źródło
3
Możesz chcieć wymusić dodanie niektórych plików, które są potem potrzebne. na przykład. plik .htaccess. Oczywiście w oparciu o Twoje wymagania.
dakdad,
3
@dakdad: Dzięki za sugestię. Poprawiona odpowiedź. Jeśli Poe ma jakieś specjalne pliki, takie jak .htaccessjuż wpisane, są one śledzone. gitignorejest ważne tylko dla nowych plików.
Daniel Böhmer
@ DanielBöhmer Może to znika z tematu, ale czy jest powód, aby usuwać ignorowanie tylko /.gitignorei nie każdego .gitignorepliku, niezależnie od tego, gdzie się znajduje? To znaczy dlaczego nie wymienić !.gitignore(bez ukośnika)?
Jason Young
1
@JasonYoung Ciekawe pytanie. Cóż, ten wzorzec wyłącza ignorowanie samego pliku. Uważam to za bardziej zwięzłe, bez skutków ubocznych, na przykład do kopiowania i wklejania. Oczywiście możesz prawdopodobnie po prostu anulować ignorowanie wszystkich .gitignoreplików w pliku najwyższego poziomu .gitignore. Ale ten wybór należy do ciebie.
Daniel Böhmer
66

.gitignore wpłynie tylko na pliki, które nie zostały jeszcze „dodane”.

Aby nowe wpisy .gitignore wpływały na wszystkie pliki

  1. Wprowadź zmiany w .gitignore
  2. git commit -a -m "Pre .gitignore changes"
  3. git rm -r --cached .
  4. git add .
  5. git commit -a -m "Post .gitignore changes"
  6. git status powinno wypisać "nic do zatwierdzenia (katalog roboczy czysty)" `
Nat Darke
źródło
Wiersz "nie został jeszcze 'dodany' jest tutaj kluczowy, ponieważ jeśli już zatwierdziłeś dany plik, ignorowanie już na nim nie będzie działać, musisz go usunąć z repozytorium i następnym razem, gdy go utworzysz, plik .gitignore zignoruje to.
Georgi Peev
21

W .git/info/exclude, dodaj tę linię:

.*

Spowoduje to rekurencyjne ignorowanie wszystkich plików ukrytych / kropkowych jako domyślne dla każdego repozytorium na komputerze. W ten sposób oddzielny .gitignoreplik dla każdego repozytorium nie jest potrzebny.

zabity przez lucyfera
źródło