.gitignore ne fonctionne pas

Mon .gitignore fichier semble être ignoré par git - l' .gitignore fichier corrompu? À quel format de fichier, lieu ou culture git s'attend-il?

Mon .gitignore :

#this is a comment
debug.log
nbproject/

sortie de git status :

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
#   (use "git add <file>..." 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 tracés.

Où dois-je commencer à chercher à corriger cela?

1113
demandé sur jacknad 2012-07-12 16:09:56

24 réponses

même si vous n'avez pas traqué les fichiers jusqu'à présent, git semble être en mesure de" savoir "à leur sujet même après les avoir ajoutés à .gitignore .

NOTE: commettez D'abord vos modifications actuelles, ou vous les perdrez.

lancez ensuite les commandes suivantes À partir du dossier supérieur de votre git repo:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"
2344
répondu Alin Huruba 2018-05-05 08:30:08

quand .gitignore fichier ne fonctionne pas (ajout de quelque chose dans .gitignore ou supprimer quelque chose.gitignore), vous pouvez consulter les conseils suivants:

  1. vous devez prêter attention au fichier Global gitignore qui parfois peut influencer votre gitignore.
  2. quand vous ajoutez quelque chose .gitignore fichier, comme la personne qui a répondu cette question d'abord:

    git rm -r --cached .
    git add .
    git commit -m "fixed untracked files"  
    
  1. quand vous retirez quelque chose .dossier gitignore. les étapes ci-dessus seront pas travailler 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 voulez supprimer du .dossier gitignore. Vous voulez que le filetype soit retracé à nouveau.

222
répondu ifeegoo 2018-03-07 23:29:32

fixe. Ok, j'ai créé le .gitignore fichier dans notepad sur windows et il ne fonctionnait pas. Quand j'ai regardé l' .le fichier gitignore sous linux ressemblait à du charabia organisé - peut-être notepad avait-il écrit unicode plutôt qu'ascii ou quelque chose comme 8-bit.

donc j'ai réécrit le fichier sur ma machine linux, et quand je l'ai ramené dans windows il fonctionne très bien! Hourra!

134
répondu Matt Parkins 2012-07-12 12:30:50

sans ajouter un autre commit à votre projet, une ligne sera suffisante pour faire fonctionner .gitignore comme il est supposé le faire:

git rm -r --cached debug.log nbproject

cela va le supprimer du dépôt, mais les garder physiquement, en anglais simple, il supprime toute histoire de changements liés à eux, et ne suivra pas non plus leur changement dans une propagation future. Une meilleure explication vous pouvez le trouver ici .

81
répondu H Aßdøµ 2017-10-24 22:04:43

une autre cause de ce problème est les espaces vides ou les onglets avant la déclaration:

exemple:

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

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

#Be aware of following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace
32
répondu Rawa 2014-10-02 10:55:24

j'ai remarqué que l'encodage du .gitignore avait un effet--si le fichier était Unicode, il était ignoré, s'il était ASCII, il ne l'était pas.

Processus:

  1. vérifier l'état: PS> git status
  2. créer une fonction pour Get-FileEncoding
  3. Test .gitignore encoding: PS> Get-FileEncoding .gitignore
  4. modifier l'encodage à ASCII: PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. confirmez: PS> git status
28
répondu craig 2017-05-23 12:34:51

comme pour les autres solutions, engagez-vous d'abord et soyez conscient que vous perdrez tout changement non engagé.

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.

17
répondu Steven Stark 2017-10-21 17:17:30

toutes les réponses ici sont en fait des solutions de contournement. Vous devez créer la .gitignore file avant d'exécuter git init , sinon git ne saura jamais que vous devez ignorer ces fichiers parce qu'ils ont déjà été suivis.

echo .idea/ >> .gitignore
git init

si vous vous développez quotidiennement, je vous conseille d'ajouter vos fichiers ignorés habituels à votre fichier ~/.gitignore_global . De cette façon, git saura déjà quels fichiers vous (ce qui signifie "Votre utilisateur", puisqu'il s'agit d'un fichier dans votre home directory) ignore généralement.

12
répondu CESCO 2016-06-01 14:18:43

vérifiez aussi le répertoire , où vous mettez .gitignore Il devrait être dans racine de votre projet :

./myproject/.gitignore

pas dans

./myproject/.git/.gitignore
11
répondu Artem Zaytsev 2014-10-14 06:32:07

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

voilà ce que j'ai fait pour régler le problème:

  • Copiez les fichiers dans un dossier temporaire
  • retirez - les de mon dossier de projet.
  • valider les modifications qui supprimer ces fichiers à partir de l'opération
  • a ajouté de nouveau ces fichiers à mon dossier de projet

D'ici là, tous les changements que j'ai faits sur ces fichiers ont été ignorés.

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

10
répondu Edesa 2017-08-21 08:27:15

il y a un autre problème avec .gitignore qui pourrait se produire, surtout pour un utilisateur windows, git ne l'aime pas quand vous appelez .gitignore (comme unity.gitignore ). Vous voudrez toujours l'appeler .gitignore , ou sur windows, .gitignore. comme windows pense que vous essayez de le renommer sans nom de fichier.

6
répondu Goldblaze 2015-10-29 16:05:58

je viens de tomber sur ce numéro. Le contenu de mon .le fichier gitignore a continué à apparaître dans la liste des fichiers non tracés.

j'utilisais ceci pour créer le fichier ignore:

echo "node_modules" > .gitignore

il s'avère que les doubles citations ont été la cause de la question pour moi. J'ai supprimé le fichier ignore et ensuite utilisé la commande à nouveau sans guillemets et cela a fonctionné comme prévu. Je n'ai pas besoin de jouer avec l'encodage du fichier. Je suis sur un Machine Win10 utilisant Cmder.

exemple:

echo node_modules > .gitignore

6
répondu bprdev 2017-11-03 05:26:20

Pour moi aucune des réponses ci-dessus, travaillé. J'ai dû copier .gitignore texte exclude.txt fichier

<Your-project-folder>\.git\info

une fois fait, rafraîchissez vos modifications et tous les fichiers non tracés ont disparu. S'engager comme d'habitude.

5
répondu raga 2017-02-20 00:47:06

j'ai eu ce même problème. Je crois qu'il s'agissait d'un écart CR vs CR+LF. J'ai caché des choses dans ma .gitignore utilisant cmd (sur windows 7) et la commande suivante:

Mauvais:

echo "file_to_be_ignored.py">>.gitignore

echo"*">.gitignore

etc.

le problème était que cette commande ne place pas la bonne fin de ligne marqueur pour Git pour reconnaître les nouvelles lignes (soit CR ou CR+LF quand git attend l'autre). J'ai résolu le problème en remplaçant manuellement chaque ligne dans vim (vim à la rescousse!) et il a parfaitement fonctionné.

essayez d'éditer votre .gitignore dans Notepad++ ou vim (idéalement), même si le fichier semble avoir été formaté correctement, essayez de remplacer les nouvelles lignes. Ça a l'air bizarre, je sais, mais ça a marché pour moi. : D

4
répondu fictivelogic 2015-02-21 06:32:39

j'ai eu ce problème, avec une .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 cherche en fait un dossier 1519110920" , mais un lien symbolique est un fichier 1519110920", donc mon dossier lib n'est pas ignoré.

j'ai fixé ceci en remplaçant lib/ext/ par lib/ext sur mon .gitignore.

4
répondu roipoussiere 2017-05-03 14:21:03

spécialement pour les utilisateurs de Windows: si vous avez des fichiers non tracés et que la suppression/suppression des fichiers cache ne fonctionne pas. Essayez d'ouvrir powershell et de convertir le .fichier gitignore codé en UTF-8.

1)$Monfichier = Get-Content ..gitignore

2)$Monfichier = | Out-File -Encodage "UTF-8" .gitignore

ne doit le faire qu'une seule fois pour encoder le .gitignore fichier de ce répertoire, et puisque le fichier est ensuite encodé correctement chaque fois que vous modifiez le fichier dans l'avenir, il devrait fonctionner. Je crois que c'est dû à un bug avec GitHub n'étant pas sur le point de lire l'encodage non UTF-8 pour A.dossier gitignore. Pour autant que je sache, ce problème n'a pas encore été résolu Pour Windows. Pas trop grave, juste une douleur à déboguer quand sa ne fonctionne pas.

4
répondu maximusg 2017-11-11 01:27:15

mon numéro était (comme L'OP suggéré) un corrompu .dossier gitignore. Je n'y croyais pas et j'ai ignoré cette possibilité jusqu'à ce que tout le reste échoue. La corruption n'est pas apparue dans vi , mais il y avait deux octets au début du fichier qui a causé le .fichier gitignore à ignorer. Pour moi, ceux-ci ne sont apparus que lorsque j'ai tapé cat .gitignore , qui a montré:

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

# ...

aucune idée de comment ceux-ci ont fini là, mais recréer le fichier de correction du problème. Une analyse hexagonale du fichier corrompu a révélé ce qui suit:

user@dev ~/project/myproject $ xxd -b .gitignore 
00000000: 11111111 11111110 00100011 00000000 00100000 00000000  ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000  B.u.i.
4
répondu pcdev 2018-01-08 02:15:35

Une chose à regarder aussi, vous économisez votre .gitignore fichier avec les fins de ligne correctes?

WINDOWS: Si vous utilisez windows, vous économisez avec windows fins de ligne? Tous les programmes ne le feront pas par défaut, notepad++ et de nombreux éditeurs php par défaut pour les fins de ligne linux de sorte que les fichiers seront compatibles avec le serveur. Une façon facile de vérifier cela, est d'ouvrir le fichier dans le bloc-notes de windows. Si tout apparaît sur une ligne, alors le fichier a été sauvegardé avec fin de ligne linux.

LINUX: Si vous avez des problèmes avec le fichier qui fonctionne dans un environnement linux. Ouvrez le fichier dans un éditeur comme emacs ou nano. Si vous voyez des caractères non imprimables, alors le fichier a été sauvegardé avec les fins de ligne de windows.

3
répondu Beachhouse 2015-06-26 16:29:47

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

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

en bref:

  • Fermez Visual Studio.
  • naviguez vers votre .dossier git
  • Supprimer ms-persistent.xml
  • Redémarrage Visuel Studio

Espérons que cela aide quelqu'un parfois

3
répondu Bartosz 2016-03-29 10:41:30

vient de supprimer le dossier ou le fichier qui commit précédemment dans git en suivant la commande, puis gitignore fichier reflétera les fichiers corrects.

    git rm -r -f "folder or files insides"
0
répondu Atif Hussain 2017-04-10 08:13:02

The .gitignore fichier ne fonctionnera pas si vous avez des commentaires en ligne, comme ceci:

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

Modifier pour ceci:

# The bar file contains sensitive data so we don't want to make this public
foo/bar
0
répondu James 2017-09-28 20:18:20

j'avais un petit problème avec ça. J'ai été en mesure d'aller à l'www.GitHub.com/project et supprimez le fichier avec l'INTERFACE utilisateur, et d'ajouter que le changement vers le maître des pensions.

on dirait que j'ai ajouté le fichier à la pension avant de faire un .gitignore. Cela semble être au travail.

0
répondu Andy 2017-12-01 20:08:27

si vous êtes un utilisateur de Notepad++, essayez de faire ce qui suit:

ouvrez votre .gitignore fichier à l'aide de Notepad++ et à faire:

Edit > Conversion EOL > Windows Format > Save

essayez d'utiliser le statut git à nouveau et voir si cela a fonctionné pour vous.

j'ai posté la réponse à une question similaire ici .

0
répondu Ozesh 2018-03-28 11:42:11

Pour moi, c'était encore un autre problème. Mon. gitignore est prêt à tout ignorer sauf les choses que je lui dis de ne pas ignorer. Comme ceci:

/*
!/content/

maintenant cela signifie évidemment que je dis aussi à git d'ignorer le .gitignore lui-même. Ce qui n'était pas un problème tant que je ne le suivais pas .gitignore. Mais à un certain moment, j'ai commis la .gitignore lui-même. Cela a ensuite conduit à la .gitignore bien ignoré.

donc en ajoutant un de plus ligne fixe:

/*
!/content/
!.gitignore
0
répondu user8118328 2018-09-04 19:41:28