.gitignore ne fonctionne pas

Mon fichier .gitignore semble être ignoré par git – le fichier .gitignore pourrait- .gitignore être corrompu? Quel est le format de fichier, l’environnement local ou la culture attendu par git?

Mon .gitignore :

 #this is a comment debug.log nbproject/ 

Sortie du git status :

 # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Untracked files: # (use "git add ..." to include in what will be committed) # # debug.log # nbproject/ nothing added to commit but untracked files present (use "git add" to track) 

Je voudrais que debug.log et nbproject/ n’apparaissent pas dans la liste des fichiers non suivis.

Où devrais-je commencer à chercher à résoudre ce problème?

Même si vous n’avez pas encore suivi les fichiers, git semble pouvoir les connaître même après les avoir .gitignore à .gitignore .

REMARQUE: Commencez par commettre vos modifications actuelles ou vous les perdrez.

Exécutez ensuite les commandes suivantes à partir du dossier supérieur de votre repository git:

 git rm -r --cached . git add . git commit -m "fixed untracked files" 

Lorsque le fichier .gitignore ne fonctionne pas (append quelque chose dans le fichier .gitignore ou supprimer quelque chose du fichier .gitignore), vous pouvez vérifier les astuces suivantes:

  1. vous devez faire attention au fichier gitignore global qui peut parfois influencer votre gitignore.
  2. Lorsque vous ajoutez quelque chose dans le fichier .gitignore, en tant que personne ayant répondu à cette question en premier:

     git rm -r --cached . git add . git commit -m "fixed untracked files" 
  1. Lorsque vous supprimez quelque chose du fichier .gitignore. Les étapes ci-dessus ne fonctionneront pas pour vous . Vous pouvez essayer ceci:
  git add -f "filetype" git commit -m "Refresh removing filetype from .gitignore file." 

le “type de fichier” signifie le fichier ou le type de fichier que vous souhaitez supprimer du fichier .gitignore. Vous voulez que le type de fichier soit à nouveau suivi.

Fixé. Ok, j’ai créé le fichier .gitignore dans le Bloc-notes sous Windows et cela ne fonctionnait pas. Lorsque je regardais le fichier .gitignore sous Linux, cela ressemblait à du charabia organisé – notepad avait peut-être écrit unicode plutôt qu’Ascii ou quel que soit le 8 bits.

J’ai donc réécrit le fichier sur ma boîte Linux, et quand je l’ai ramené dans Windows, ça marche bien! Hourra!

Sans append un autre engagement à votre projet, une seule ligne suffira à faire fonctionner .gitignore comme il se doit:

 git rm -r --cached debug.log nbproject 

Cela le supprimera du référentiel tout en le conservant physiquement, en clair, supprimera tout historique des modifications qui y sont liées et ne suivra pas ses modifications lors de futurs validations. Une meilleure explication, vous pouvez le trouver ici .

Une autre cause de ce problème est la présence d’espaces ou d’tabs avant l’instruction:

Exemple:

 #Be aware of following: notWorkingIgnore.* workingIgnore.* 

Et comme le souligne le commentaire ci-dessous, un espace de fuite peut être un problème

 #Be aware of following: notWorkingIgnore.* #< -Space workingIgnore.*#<-Nospace 

J’ai remarqué que le codage de .gitignore avait un effet – si le fichier était Unicode, il était ignoré, s’il s’agissait d’ASCII, ce n’était pas le cas.

Processus:

  1. Vérifier le statut: PS> git status
  2. Créer une fonction pour Get-FileEncoding
  3. Testez le .gitignore de .gitignore : PS> Get-FileEncoding .gitignore
  4. Modifier le codage en ASCII: PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. Confirmer: PS> git status

Comme pour les autres solutions, validez d’abord et soyez conscient que vous perdrez les modifications non validées.

J’ai eu de meilleurs résultats avec ceci:

 git rm -r --cached . git reset HEAD --hard git status 

notez que le statut ne devrait pas avoir de fichiers modifiés maintenant.

Toutes les réponses ici sont en fait des solutions de contournement. Vous devez créer le fichier .gitignore AVANT de lancer git init , sinon git ne saura jamais que vous devez ignorer ces fichiers car ils ont déjà été suivis.

 echo .idea/ >> .gitignore git init 

Si vous développez quotidiennement, je vous conseille d’append vos fichiers ignorés habituels à votre fichier ~/.gitignore_global . De cette façon, git saura déjà quels fichiers vous voulez (c’est-à-dire “votre utilisateur”, puisqu’il s’agit d’un fichier dans votre répertoire personnel).

Consultez également le répertoire où vous avez placé .gitignore. Il devrait être à la racine de votre projet :

 ./myproject/.gitignore 

pas dedans

 ./myproject/.git/.gitignore 

Dans mon cas, c’est parce que les fichiers existent déjà dans le repository et j’essaie de l’ignorer.

Ce sont les choses que j’ai faites pour résoudre le problème:

  • Copiez les fichiers dans un dossier temporaire
  • Supprimez-les de mon dossier de projet.
  • Valider les modifications qui suppriment ces fichiers du repository
  • Re-ajouté ces fichiers dans mon dossier de projet

D’ici là, toutes les modifications apscopes à ces fichiers étaient ignorées.

Je pense que vous ne pouvez pas ignorer les fichiers qui existent déjà sur le repo.

Il y a un autre problème avec .gitignore qui pourrait se produire, en particulier pour un utilisateur Windows, git ne l’aime pas lorsque vous nommez .gitignore (tel que unity.gitignore ). Vous voudrez toujours le nommer .gitignore , ou sur windows, .gitignore. comme Windows pense que vous essayez de le renommer sans nom de fichier.

Je viens de rencontrer ce problème. Le contenu de mon fichier .gitignore a continué à apparaître dans la liste des fichiers non suivis.

Je l’utilisais pour créer le fichier ignore:

echo "node_modules" > .gitignore

Il se trouve que les doubles citations étaient à l’origine du problème pour moi. J’ai supprimé le fichier ignoré, puis utilisé à nouveau la commande sans les guillemets et cela a fonctionné comme prévu. Je n’ai pas eu besoin de jouer avec le codage de fichier. Je suis sur une machine Win10 utilisant Cmder.

Exemple:

echo node_modules > .gitignore

Pour moi, aucune des réponses ci-dessus n’a fonctionné. Je devais copier le texte exclude.txt dans le fichier exclude.txt trouvé à

 \.git\info 

Une fois cela fait, actualisez vos modifications et tous les fichiers non suivis ont disparu. S’engager comme d’habitude.

J’ai eu le même problème. Je crois que le problème était une divergence entre CR et CR + LF. J’ai caché des choses dans mon .gitignore en utilisant cmd (sous Windows 7) et la commande suivante:

Mal:

echo “file_to_be_ignored.py” >> .gitignore
echo “* ~” >> .gitignore

Etc.

Le problème était que cette commande ne place pas le marqueur de fin de ligne correct pour que git reconnaisse les nouvelles lignes (CR ou CR + LF lorsque git attend l’autre). J’ai résolu le problème en remplaçant manuellement chaque nouvelle ligne dans vim (vim à la rescousse!) Et cela fonctionnait parfaitement.

Essayez de modifier votre fichier .gitignore dans Notepad ++ ou vim (idéalement), même si le fichier semble avoir été formaté correctement, essayez de remplacer les nouvelles lignes. Cela semble étrange, je sais, mais a travaillé pour moi. :RÉ

J’ai eu ce problème, avec un .gitignore contenant cette ligne:

 lib/ext/ 

Je viens de réaliser qu’en fait, ce répertoire est un lien symbolique vers un dossier ailleurs:

 ls -la lib/ext/ lrwxr-xr-x 1 roipoussiere users 47 Feb 6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib 

Sur la ligne lib/ext/ , git recherche en fait un dossier , mais un lien symbolique est un fichier , donc mon dossier lib n’est pas ignoré.

J’ai corrigé cela en remplaçant lib/ext/ par lib/ext sur mon .gitignore.

Spécifiquement pour les utilisateurs Windows: Si vous avez des fichiers non suivis et que la suppression / suppression des fichiers mis en cache ne fonctionne pas. Essayez d’ouvrir powershell et de convertir le fichier .gitignore en encodage UTF-8.

1) $ Myfile = Get-Content ..gitignore

2) $ Myfile = | Out-File -Encoding “UTF8” .gitignore

Vous ne devez le faire qu’une fois pour encoder le fichier .gitignore pour ce répertoire, et comme le fichier est codé correctement à chaque fois que vous éditez le fichier à l’avenir, il devrait fonctionner. Je pense que cela est dû à un problème, GitHub n’étant pas sur le sharepoint lire un encodage non UTF-8 pour un fichier .gitignore. A ma connaissance, ce problème n’a pas encore été résolu pour Windows. Pas trop gros, juste un mal à déboguer quand ça ne marche pas.

Mon problème était (comme suggéré par OP) un fichier .gitignore corrompu. Je n’ai pas cru que c’était le cas et ignoré la possibilité jusqu’à ce que tout le rest échoue. La corruption n’apparaissait pas dans vi , mais il y avait deux octets au début du fichier qui faisaient que le fichier .gitignore était ignoré. Pour moi, ceux-ci cat .gitignore que lorsque je cat .gitignore , qui montrait:

   # Built application files *.apk *.ap_ # ... 

Aucune idée de la façon dont ceux-ci ont abouti là-bas, mais la recréation du fichier a résolu le problème. Une parsing hexadécimale du fichier corrompu a montré ce qui suit:

 user@dev ~/project/myproject $ xxd -b .gitignore 00000000: 11111111 11111110 00100011 00000000 00100000 00000000 ..#. . 00000006: 01000010 00000000 01110101 00000000 01101001 00000000 Bui 

Une chose à regarder, est-ce que vous enregistrez votre fichier .gitignore avec les fins de ligne correctes?

WINDOWS: Si vous l’utilisez dans Windows, l’enregistrez-vous avec les fins de ligne Windows? Tous les programmes ne le feront pas par défaut, notepad ++ et de nombreux éditeurs de php utilisent par défaut les fins de ligne linux pour que les fichiers soient compatibles avec le serveur. Un moyen simple de vérifier cela est d’ouvrir le fichier dans le Bloc-notes Windows. Si tout apparaît sur une ligne, le fichier a été enregistré avec les fins de ligne linux.

LINUX: Si vous rencontrez des problèmes avec le fichier fonctionnant dans un environnement Linux. Ouvrez le fichier dans un éditeur tel que emacs ou nano. Si vous voyez des caractères non imprimables, le fichier a été enregistré avec les fins de ligne Windows.

Ok, donc dans mon cas la solution acceptée ne fonctionnait pas, et ce qui a fonctionné est décrit ici:

https://ericnelon.wordpress.com/2014/06/21/is-visual-studio-2013-ignoring-your-gitignore-file/

En bref:

  • Fermez Visual Studio.
  • Accédez à votre dossier .git
  • Supprimer ms-persist.xml
  • Redémarrez Visual Studio

J’espère que ça aide quelqu’un

Il suffit de supprimer le dossier ou le fichier qui s’engage précédemment dans git en suivant la commande, puis le fichier gitignore reflétera les fichiers corrects.

  git rm -r -f "folder or files insides" 

Le fichier .gitignore ne fonctionnera pas si vous avez des commentaires intégrés, comme ceci:

 foo/bar # The bar file contains sensitive data so we don't want to make this public 

Changez la en ceci:

 # The bar file contains sensitive data so we don't want to make this public foo/bar 

J’avais un petit problème avec ça. J’ai pu aller sur le site http://www.GitHub.com/project et supprimer le fichier avec l’interface utilisateur, et append cette modification au référentiel maître.

On dirait que j’ai ajouté le fichier au repository avant de créer un .gitignore. Cela semble fonctionner.

Si vous êtes un utilisateur Notepad ++, procédez comme suit:

Ouvrez votre fichier .gitignore en utilisant Notepad ++ et faites:

Modifier> Conversion EOL> Format Windows> Enregistrer

Essayez à nouveau d’utiliser le statut git et voyez si cela a fonctionné pour vous.

J’ai posté la réponse à une question similaire ici .