Comment ignorer tous les répertoires / fichiers cachés de manière récursive dans un référentiel git?

128

J'aimerais que Git ignore tous les fichiers et répertoires cachés. c'est à dire

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

Existe-t-il une règle simple pour couvrir cela sans ajouter spécifiquement chaque entrée?

Poe
la source

Réponses:

165

Ajoutez simplement un motif à .gitignore

.*
!/.gitignore

Edit: Ajout du .gitignorefichier lui-même (c'est important s'il n'est pas encore validé).

Daniel Böhmer
la source
3
Vous voudrez peut-être forcer l'ajout de certains fichiers nécessaires après cela. par exemple. le fichier .htaccess. En fonction de vos besoins bien sûr.
dakdad
3
@dakdad: Merci pour la suggestion. Amélioration de la réponse. Si Poe a des fichiers spéciaux comme .htaccessdéjà enregistrés, ils continuent d'être suivis. gitignoren'est important que pour les nouveaux fichiers.
Daniel Böhmer
@ DanielBöhmer Peut-être que cela sort du sujet, mais y a-t-il une raison de ne /.gitignorepas ignorer uniquement et pas tous les .gitignorefichiers, quel que soit leur emplacement? Ie pourquoi ne pas lister !.gitignore(pas de barre oblique)?
Jason Young le
1
@JasonYoung Question intéressante. Eh bien, ce modèle n'ignore que le fichier lui-même. Je trouve cela plus concis sans effets secondaires pour un exemple à copier et coller. Bien sûr, vous pouvez probablement simplement désignorer les .gitignorefichiers de votre .gitignorefichier de niveau supérieur . Mais ce choix vous appartient.
Daniel Böhmer le
64

.gitignore n'affectera que les fichiers qui n'ont pas encore été «ajoutés».

Pour créer de nouvelles entrées .gitignore affectent tous les fichiers

  1. Apportez des modifications à .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 devrait afficher "rien à valider (répertoire de travail nettoyé)" `
Nat Darke
la source
La ligne "pas encore 'ajouté' est la clé ici, car si vous avez déjà validé un fichier donné, ignorer ne fonctionnera plus sur lui, vous devez le supprimer du référentiel et la prochaine fois que vous le créerez le .gitignore va l'ignorer.
Georgi Peev
21

Dans .git/info/exclude, ajoutez cette ligne:

.*

Cela fera d'ignorer tous les fichiers cachés / dot récursivement la valeur par défaut pour chaque référentiel sur la machine. Un .gitignorefichier séparé pour chaque dépôt n'est pas nécessaire de cette façon.

tué
la source