1650 votes

.gitignore ne fonctionne pas

Je suis sous Windows et mon fichier .gitignore semble être ignoré par git.

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)

J'aimerais que debug.log et nbproject/ n'apparaissent pas dans la liste des fichiers non suivis.

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

78 votes

Assurez-vous que votre .gitignore Le fichier utilise ANSI o UTF-8 l'encodage. S'il utilise quelque chose d'autre comme Unicode BOM il est possible que Git ne puisse pas lire le fichier.

11 votes

@ADTC c'était exactement le problème sur ma machine (Windows). J'ai utilisé echo "file" > .gitignore dans PowerShell, le fichier avait un encodage UCS-2 !

3379voto

Alin Huruba Points 4343

Même si vous n'avez pas suivi les fichiers jusqu'à présent, git semble être capable de les "connaître" même après les avoir ajoutés à .gitignore.
Une solution rapide que j'ai utilisée consiste à exécuter les commandes suivantes depuis le dossier supérieur de votre dépôt git :

(édité)

git rm -r --cached .

Suivi par :

git add .

et

git commit -m "fixed untracked files"

Cela devrait régler votre problème.

1 votes

J'ai obtenu un "Unknown option : -rm" en essayant de lancer "git -rm -r --cached".

8 votes

J'ai obtenu "usage : git rm [options] [--] <file>..." imprimé lorsque j'ai essayé "git rm -r --cached". Si cela est important, j'utilise Git à partir de PowerShell après avoir cliqué sur "Tools->Open a shell here" dans GitHub pour Windows.

62 votes

Sous Windows : git rm . -r --cached y git add .

216voto

Matt Parkins Points 1765

Corrigé. Ok, j'ai créé le fichier .gitignore dans le bloc-notes sous Windows et cela ne fonctionnait pas. Lorsque j'ai visualisé le fichier .gitignore sous linux, il ressemblait à du charabia organisé - peut-être que notepad avait écrit en unicode plutôt qu'en ascii ou en 8 bits.

J'ai donc réécrit le fichier sur ma boîte linux, et quand je l'ai ramené dans Windows, il fonctionne bien ! Hourra !

83 votes

Dans Notepad, choisissez simplement l'encodage "ANSI" dans la boîte de dialogue "Enregistrer sous". Ou mieux encore, procurez-vous un éditeur de texte approprié - après tout, vous êtes un programmeur :) ... Je peux recommander "Programmer's Notepad", d'autres préfèrent Notepad++ et il en existe littéralement des centaines d'autres.

2 votes

Hehe, yep, j'aurais dû le créer dans netbeans (que j'utilisais à l'époque), eclipse ou visual studio. Je l'ai juste appelé depuis la ligne de commande en pensant que ça ne ferait pas de différence.

1 votes

Nous devons utiliser le chemin relatif linux/unix et non le chemin Windows (c'est-à-dire utiliser "/" au lieu de "\") même si vous utilisez le système d'exploitation Windows et l'enregistrer en ANSI comme indiqué dans le commentaire précédent.

158voto

JstRoRR Points 531

J'ai suivi les commandes ci-dessous et cela a effectivement sauvé ma soirée avec .gitignore. J'ai juste ajouté un '.', ça marche aussi sous linux.

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

et ensuite j'ai poussé mon commit vers le master.

Merci pour cet article.

118voto

H Aßdøµ Points 100

Sans même avoir à ajouter un autre commit à votre projet, une ligne suffira à rendre .gitignore fonctionnent comme prévu :

git rm -r --cached debug.log nbproject

1 votes

Cela a fonctionné exactement comme je le voulais - j'avais seulement 1 fichier qui n'était pas suivi correctement. J'ai enregistré son contenu dans le bloc-notes, et j'ai fait : git rm -r --cached someFile.php et ça a marché comme sur des roulettes :)

0 votes

@FMFF Cela le supprimera du référentiel mais les conservera physiquement, en clair, cela supprime tout historique des changements qui leur sont liés, et ne suivra pas non plus leur changement dans tout futur commit. Une meilleure explication peut être trouvée ici : stackoverflow.com/questions/37279654/

1 votes

J'ai obtenu un message "fatal : pathspec 'debug.log' ne correspond à aucun fichier".

16voto

Mobiletainment Points 4326

Épargnez-vous beaucoup d'ennuis et de temps et obtenez un gitignore prêt à l'emploi pour votre environnement à partir de ce dépôt GitHub : https://github.com/github/gitignore

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X