Global Git ignore

841

Je veux configurer Git pour ignorer globalement certains fichiers.

J'ai ajouté un .gitignorefichier à mon répertoire personnel ( /Users/me/) et je lui ai ajouté la ligne suivante:

*.tmproj

Mais ce n'est pas ignorer ce type de fichiers, une idée de ce que je fais mal?

Doux Fuzz
la source
7
Vous pouvez également consulter les suggestions d'ignorer de GitHub - help.github.com/articles/ignoring-files ; ils ont un référentiel de modèles d'
ignorance
6
Vous pouvez également envisager d'utiliser simplement un .gitignore dans des projets individuels. Sinon, si vous (ou quelqu'un d'autre) clonez le projet sur un nouveau système, vous devrez également recréer le fichier d'exclusion globale et la configuration à chaque fois.
Stan Kurdziel
25
Les fichiers ignorables créés par le projet doivent se trouver dans le fichier .gitignore du projet, les fichiers ignorables créés par votre ordinateur doivent être placés dans le fichier .gitignore global (comme les fichiers temporaires d'éditeur / IDE, etc.).
Pylinux
2
Les répertoires d'environnement virtuel Python sont un cas d'utilisation courant pour les entrées dans mon fichier d'exclusion global ou local.
Ragoût
10
@Pylinux En fait, par git-scm , les IDE personnels et les trucs spécifiques au workflow peuvent aller dans le fichier non suivi dans le référentiel .git/info/exclude, donc il ne doit pas nécessairement aller dans le fichier global. En outre, le fichier gitignore global par défaut et automatique est $HOME/.config/git/ignore.
Acumenus du

Réponses:

1422

Vous devez configurer votre core.excludesfilefichier de configuration globale pour pointer vers ce fichier global ignorer.

par exemple

* nix ou 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"

Pour Windows, il a défini l'emplacement C:\Users\{myusername}\.gitignore. Vous pouvez vérifier que la valeur de configuration est correcte en procédant comme suit:

git config --global core.excludesfile

Le résultat doit être le chemin développé vers votre profil utilisateur .gitignore. Assurez-vous que la valeur ne contient pas la %USERPROFILE%chaîne non développée .

Important : Les commandes ci-dessus ne définiront que l'emplacement du fichier ignoré que git utilisera. Le fichier doit toujours être créé manuellement à cet emplacement et rempli avec la liste d'ignorance. (d' après le commentaire de muruge )

Vous pouvez lire sur la commande à https://help.github.com/articles/ignoring-files/#create-a-global-gitignore

CB Bailey
la source
2
Tant qu'il n'est pas dans votre HEADindex ou dans votre index, cela ne devrait pas faire de différence que le fichier ait été suivi ou non. Il peut être utile si vous ajoutez la sortie git status, git config core.excludesfileà votre question.
CB Bailey
2
Puis-je utiliser #au début des lignes à l'intérieur ~/.gitignorepour ajouter des commentaires à l'intérieur du fichier global ignore?
Dror
9
Les versions récentes de la boîte à outils officielle de Git Windows utilisent à la place la syntaxe * nix; si cette ligne ne fonctionne pas, essayez plutôt celle * nix.
Andy Jones
9
Je n'ai pas pu faire fonctionner cela en utilisant la %USERPROFILE%variable. J'ai dû entrer le chemin d'accès complet au fichier à l'aide des séparateurs de répertoire * nix. par exemple core.excludesfile C: /Users/User/.gitignore
Vince
21
Impossible de le faire fonctionner avec la variable% USERPROFILE%. J'ai dû utiliser git config --global core.excludesfile '~ / .gitignore' dans Windows pour le mettre à l'emplacement C: / users / {myusername} /. Gitignore. De plus, la commande ci-dessus ne définira que l'emplacement du fichier ignoré que git utilisera. Le fichier doit toujours être créé manuellement à cet emplacement et rempli avec la liste d'ignorance.
muruge du
301

Avant de reconfigurer le fichier d'exclusion global, vous souhaiterez peut-être vérifier sa configuration actuelle à l'aide de cette commande:

git config --get core.excludesfile

Dans mon cas, lorsque je l'ai exécuté, j'ai vu que mon fichier d'exclusion global était configuré pour

~ / .gitignore_global
et il y avait déjà quelques choses énumérées ici. Ainsi, dans le cas de la question donnée, il peut être judicieux de vérifier d'abord un fichier d'exclusion existant et d'y ajouter le nouveau masque de fichier.

yanni
la source
2
cela fonctionne très bien. Configurez votre fichier gitignore global comme d'habitude; une entrée par ligne.
Maarten Hartman
237

Bien que d'autres réponses soient correctes, elles définissent la valeur de configuration globale alors qu'il existe un emplacement git par défaut pour le fichier global git ignore:

*rien:

~/.config/git/ignore

Les fenêtres:

%USERPROFILE%\git\ignore

Vous devrez peut-être créer un gitrépertoire et un ignorefichier, mais vous pouvez ensuite mettre vos ignorés globaux dans ce fichier et c'est tout!

La source

Le fichier dans lequel placer un motif dépend de la façon dont le motif doit être utilisé.

  • Les modèles qu'un utilisateur souhaite que Git ignore dans toutes les situations (par exemple, les fichiers de sauvegarde ou temporaires générés par l'éditeur de choix de l'utilisateur) vont généralement dans un fichier spécifié par core.excludesFiledans l'utilisateur ~/.gitconfig. Sa valeur par défaut est $ XDG_CONFIG_HOME / git / ignore. Si $ XDG_CONFIG_HOME n'est pas défini ou vide, $ HOME / .config / git / ignore est utilisé à la place.
Steve Jorgensen
la source
1
C'est bien; Je n'en savais rien ... mais n'est-ce pas un fichier généré? Peut-il être remplacé lors de la mise à jour / réinstallation?
danielsdesk
1
Je crois que le fichier est créé / modifié en exécutant certaines gitcommandes. Puisqu'il s'agit d'un fichier de paramètres dans le répertoire de chaque utilisateur, je ne pense pas qu'il devrait jamais être remplacé.
Steve Jorgensen
1
Je suis d'accord que cela devrait être la réponse acceptée, mais je n'ai pas trouvé cela dans -t̶h̶e̶ ̶d̶o̶c̶u̶m̶e̶n̶t̶a̶t̶i̶o̶n̶ un article d'aide ( help.github.com/articles/ignoring-files )
AVProgrammer
1
@AVProgrammer Je viens de modifier la réponse pour refléter le changement dans l'organisation du document source.
Steve Jorgensen
7
On dirait que sous Windows le chemin est également ~/.config/git/ignore.
suriv
40

Pour créer un gitignore global à partir de zéro:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. La première ligne change le répertoire en C:/Users/User
  2. Après cela, vous créez un fichier vide avec l' .gitignore_globalextension
  3. Et enfin, définissez global ignore sur ce fichier.
  4. Ensuite, vous devez l'ouvrir avec une sorte de bloc-notes et ajouter les règles d'ignorance nécessaires.
Phoera
la source
18

D' ici .

Si vous créez un fichier dans votre référentiel nommé .gitignore, git utilisera ses règles lors de la recherche des fichiers à valider. Notez que git n'ignorera pas un fichier qui a déjà été suivi avant qu'une règle ne soit ajoutée à ce fichier pour l'ignorer. Dans un tel cas, le fichier doit être non suivi, généralement avec:

git rm --cached filename

Est-ce votre cas?

LaGrandMere
la source
J'essaie d'ignorer globalement, ce qui ne se produit pas !!
Mild Fuzz
@MildFuzz sous Linux, le core.excludesfilefichier semble être interprété différemment d'un .gitignorefichier. Si vous voulez ignorer un répertoire entier, mettez simplement le nom du répertoire comme .vscode/au lieu de.vscode/*
Aspiring Dev
11

Si vous utilisez le système Unix, vous pouvez résoudre votre problème en deux commandes. Où le premier initialise les configurations et le second modifie le fichier avec un fichier à ignorer.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore
Purkhalo Alex
la source
10
  1. Créez un fichier .gitignore dans votre répertoire personnel
touch ~/.gitignore
  1. Ajoutez-y des fichiers (les dossiers ne sont pas reconnus )

Exemple

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

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

# but you can do this
.vscode/*
build/*
  1. Vérifiez si un git a déjà un gitignore global
git config --get core.excludesfile
  1. Dites à git où se trouve le fichier
git config --global core.excludesfile '~/.gitignore'

Voila !!

Prerak Mann
la source
"les dossiers ne sont pas reconnus" - C'est juste faux, les dossiers fonctionnent bien ...
TobiX
7

N'oubliez pas que l'exécution de la commande

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

va simplement configurer le fichier global, mais ne le créera PAS. Pour Windows, recherchez le .gitconfigfichier dans votre répertoire Utilisateurs et modifiez-le selon vos préférences. Dans mon cas, c'est comme ça:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore
souris md
la source
3

Je peux ignorer un .tmprojfichier en incluant l'un .tmprojou l' autre *.tmprojdans mon /users/me/.gitignore-globalfichier.

Notez que le nom de fichier .gitignore-globalne l' est pas .gitignore. Cela n'a pas fonctionné en incluant .tmprojou *.tmprojdans un fichier appelé .gitignoredans le /users/merépertoire.

Sri Sankaran
la source
4
Peu importe ce que vous appelez votre fichier global ignorer tant qu'il correspond à votre core.excludesfileconfiguration.
CB Bailey
Ah! Bon point @CharlesBailey. Cependant, cela peut être quelque chose que l'auteur peut vouloir vérifier. La raison pour laquelle le .tmprojfichier n'est pas ignoré est peut-être parce que l'utilisateur ne l' excludesfileest pas .gitignore.
Sri Sankaran, le
Je suppose qu'il pensait que l'utilisateur serait assez intelligent pour s'en rendre compte.
WORMSS
2

Vous devez créer un fichier d'exclusion pour cela. Découvrez cet essentiel qui est assez explicite.

Pour répondre à votre question, vous devrez peut-être désindexer le .tmprojfichier (si vous l'avez déjà ajouté à l'index) avec git rm --cached path/to/.tmprojou git addet commitvotre .gitignorefichier.

Nic
la source
J'essaie de le faire à l'échelle mondiale, pas seulement par repo
Mild Fuzz
Ouais, c'est ce à quoi je me suis lié dans l'essentiel. J'étais un peu confus par la question d'origine. L'avez-vous fait git rm --cached?
Nic
oui, j'ai essayé ça. Il me semble que j'ai suivi tous les conseils recommandés! Qu'est-ce que je rate?
Mild Fuzz
Comme l'a suggéré, j'ajouter votre statut git et exclut les informations à la question :)
Nic
2

sur sous - système Windows pour linux je devais naviguer à la racine du sous - système par cd ~/puis touch .gitignoreet puis mettre à jour la configuration globale de gitignore là - dedans.

J'espère que ça aide quelqu'un.

bboydflo
la source
0

Si vous utilisez VSCODE, vous pouvez obtenir cette extension pour gérer la tâche pour vous. Il surveille votre espace de travail chaque fois que vous enregistrez votre travail et vous aide à ignorer automatiquement les fichiers et dossiers que vous avez spécifiés dans vos paramètres vscode.json ignoreit (extension vscode)

marcdomain
la source