Git global ignore ne fonctionne pas

J’ai créé le fichier .gitignore_global et l’ .gitignore_global mis dans mon répertoire d’installation git. Lorsque je lance la commande:

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

les règles du fichier ignore ne sont pas appliquées à mes commits.

Lorsque je renomme le fichier .gitignore et que je le place dans la racine de mon projet, les règles s’appliquent.

Qu’est-ce qui ne va pas ici?

Peut-être que vous devez faire:

 git config --global core.excludesfile ~/.gitignore_global 

Et prendre un café.

Je pensais que je me mêlerais de ça. Il existe une autre raison pour laquelle le fichier global ignore semble ne pas fonctionner. C’est quelque chose qui, à mon avis, n’a pas été abordé dans les réponses précédentes. Il est tellement évident que, bien sûr , il est très facile à rater.

C’est que git ignorera uniquement les nouveaux fichiers . Si le fichier est déjà suivi par git, Git ne l’ignorera évidemment pas! Ainsi, tous les modèles gitignore dans un fichier gitignore ou un fichier d’ exclude ne s’appliquent pas .

Ça a du sens. Pourquoi git voudrait-il ignorer les modifications apscopes aux fichiers qu’il suit déjà? Si le fichier doit être ignoré, vous devez d’abord dire à git de ne pas le suivre, puis l’ignorer comme décrit dans le manuel. Pour plus d’informations sur la manière de désarchiver les fichiers, consultez cette réponse .

Tout cela m’amène à me demander s’il est possible d’ignorer les modifications apscopes aux fichiers suivis. Encore une fois, git livre. Cette réponse; Git: Ignorer les fichiers suivis nous donne la commande:

git update-index --assume-unchanged file

Enfin, voici quelques informations supplémentaires sur le débogage de git ignore.

La page de manuel de gitignore (5) nous indique:

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 son choix) vont généralement dans un fichier spécifié par core.excludesfile dans le fichier ~ / .gitconfig de l’utilisateur. 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.

Donc, c’est nouveau et remplace le précédent ~/.gitignore_global mentionné précédemment.

Ensuite, et cela est vraiment utile, c’est qu’à partir de 1.8.2, nous avons maintenant d’excellents outils de débogage. Jettes un coup d’oeil à:

Git apprend à ignorer mieux – Nouveau dans 1.8.2

Cela montre comment utiliser le nouvel indicateur check-ignore pour vérifier que git ignore vos modèles, par exemple

git check-ignore bin/a.dll --verbose

J’ai trouvé que quand je l’avais défini comme ceci:

 git config --global core.excludesfile $HOME/.config/git/ignore 

ça n’a pas marché. Changer pour ne pas utiliser la variable $ HOME, comme ceci:

 git config --global core.excludesfile ~/.config/git/ignore 

il a immédiatement commencé à fonctionner. J’espère que ceci aide quelqu’un d’autre.

FYI:

 $ git --version git version 1.7.10.2 (Apple Git-33) 

Note: à partir de git1.7.12 (août 2012) :

La valeur de:

  • core.atsortingbutesfile défaut à $ HOME / .config / git / atsortingbutes et
  • core.excludesfile est core.excludesfile défaut sur $HOME/.config/git/ignore respectivement lorsque ces fichiers existent.

Donc, si vous créez un $HOME/.config/git/atsortingbutes , vous n’avez même pas besoin de définir votre paramètre core.excludesfile .

Le fichier doit être dans votre répertoire personnel. Sur Windows, cela signifie généralement: C: \ documents and settings \ [user].

Sous linux c’est: / home / [user]

J’ai eu ce problème parce que j’avais initialement appelé ‘git config core.excludefiles’ sans –global et avec une mauvaise valeur, et donc il avait stocké la propriété localement. On dirait que la propriété locale a caché celle globale (qui avait la valeur correcte), l’ignorant complètement.

Une autre raison difficile à suivre pour laquelle .gitignore (_global) semble ne pas fonctionner pourrait être de créer des espaces dans les lignes. Le fichier ne pardonne pas pour les espaces principaux. Donc, assurez-vous que chaque ligne de votre fichier n’en a pas, sauf s’il s’agit d’une ligne vide. Il m’a fallu un moment pour comprendre.

Il suffit d’append mes deux cents.

J’ai récemment fait une erreur et j’ai exécuté la commande suivante git config core.excludesfile tags le chemin d’ git config core.excludesfile tags remplacé par un fichier local dans le repository actuel et cette configuration a été écrite dans le fichier de configuration local sous .git/config . que j’ai juste ouvert le fichier .git/config et supprimé la ligne excludesfile tags et tout est revenu à la normale.

J’avais le même problème (sous Windows). J’ai fini par vérifier mon fichier ~/.gitconfig et constaté que mon fichier ~/.gitconfig était défini sur:

 excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt 

mais ça aurait dû être:

 excludesfile = C:\\Users\\myUserName\\.gitignore_global 

Après l’avoir changé, tout a fonctionné comme il se doit.

Une autre raison pour laquelle un git global ignore peut ne pas fonctionner: des caractères invisibles dans le chemin.

J’ai seulement découvert que c’était mon problème en collant le message d’avertissement de git-check-ignore dans la barre d’adresse de Chrome, où il est heureusement devenu visible:

entrer la description de l'image ici

(Il n’était pas visible sur le terminal. Et cela aurait pu être un long lapin de débogage … 😅)