Mon .gitignore
fichier semble être ignoré par Git - le .gitignore
fichier peut-il être corrompu? À quel format de fichier, paramètres régionaux 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 debug.log
et nbproject/
ne pas apparaître dans la liste des fichiers non suivis.
Où dois-je commencer à chercher à résoudre ce problème?
.gitignore
fichier utiliseANSI
ouUTF-8
encodage. S'il utilise autre choseUnicode BOM
, il est possible que Git ne puisse pas lire le fichier.echo "file" > .gitignore
dans PowerShell, le fichier avait un encodage UCS-2!git rm --cached debug.log nbproject/
Réponses:
Même si vous n'avez pas suivi les fichiers jusqu'à présent, Git semble être en mesure de "les connaître" même après les avoir ajoutés
.gitignore
.AVERTISSEMENT: commencez par valider vos modifications actuelles, sinon vous les perdrez.
Exécutez ensuite les commandes suivantes à partir du dossier supérieur de votre référentiel Git:
la source
S'il semble que Git ne remarque pas les modifications que vous avez apportées à votre
.gitignore
fichier, vous pouvez vérifier les points suivants:.gitignore
fichier global peut interférer avec votre fichier local.Lorsque vous ajoutez quelque chose dans un fichier .gitignore, essayez ceci:
Si vous supprimez quelque chose d'un fichier .gitignore et que les étapes ci-dessus ne fonctionnent peut-être pas, si vous avez constaté que les étapes ci-dessus ne fonctionnent pas, essayez ceci :
la source
git rm -r --cached .
travaillé pour moiFixé. OK, j'ai créé le fichier .gitignore dans le Bloc-notes sur Windows et cela ne fonctionnait pas. Quand j'ai vu le fichier .gitignore sous Linux, il ressemblait à du charabia organisé - peut-être que le Bloc-notes avait écrit Unicode plutôt que ASCII ou quelque chose de 8 bits.
J'ai donc réécrit le fichier sur ma boîte Linux, et quand je l'ai ramené dans Windows, cela fonctionne bien! Hourra!
la source
Sans ajouter un autre commit à votre projet, une ligne sera suffisante pour faire
.gitignore
fonctionner comme elle est censée:Cela les supprimera du référentiel, mais les conservera toujours physiquement. En clair, il supprime tout historique des modifications qui leur sont liées et ne suivra pas non plus leur modification lors d'une future validation. Vous pouvez trouver une meilleure explication ici .
la source
git rm -r --cached someFile.php
et cela a fonctionné comme un charme :)Une autre cause de ce problème est les espaces vides ou les tabulations avant l'instruction:
Exemple:
Et comme le souligne le commentaire ci-dessous, un espace de fin peut également être un problème:
la source
*.txt # Tex files
. Mais git comprend: "Ignorez les fichiers avec l'extensiontxt
"J'ai remarqué que l'encodage du
.gitignore
avait un effet - si le fichier était Unicode, il était ignoré, s'il était ASCII, ce n'était pas le cas.Processus:
PS> git status
.gitignore
Encodage du test :PS> Get-FileEncoding .gitignore
PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
PS> git status
la source
touch .gitignore
etecho ".db" >> .gitignore
via PowerShell. J'ai trouvé que leecho ".db" >> .gitignore"
paramètre d'encodage du fichier était UCS-2 LE-BOM, une conversion rapide en ASCII et le gitignore a commencé à fonctionner.Comme pour les autres solutions, engagez-vous d'abord et sachez que vous allez perdre tout changement de l' ONU désengagés.
J'ai eu de meilleurs résultats avec ceci:
Notez que l'état ne devrait pas avoir de fichiers modifiés maintenant.
la source
Dans mon cas, c'est parce que les fichiers existent déjà dans le référentiel et j'essaie de l'ignorer.
Voici les choses que j'ai faites pour résoudre le problème:
D'ici là, toutes les modifications que j'ai apportées à ces fichiers ont été ignorées.
Je pense que vous ne pouvez pas ignorer les fichiers qui existent déjà sur le référentiel.
la source
Toutes les réponses ici sont en fait des solutions de contournement. Vous devez créer le fichier .gitignore avant d'exécuter
git init
. Sinongit
, vous ne saurez jamais que vous devez ignorer ces fichiers, car ils ont déjà été suivis.Si vous vous développez quotidiennement, je vous conseille d'ajouter vos fichiers habituels ignorés à votre
~/.gitignore_global
fichier. De cette façon, vousgit
saurez déjà quels fichiers vous (c'est-à-dire "votre utilisateur", car c'est un fichier de votre répertoire personnel) ignorez habituellement.la source
~/.gitignore_global
est un nom configurable. Exécutez d'git config --global core.excludesfile
abord pour voir si vous avez déjà un fichier défini. Sinon, exécutezgit config --global core.excludesfile ~/.gitignore_global
..gitignore
premier: renommez le fichier suivi..gitignore
sera appliqué comme s'il était nouveau.Consultez également le répertoire dans lequel vous l'avez placé
.gitignore
.Il doit être à la racine de votre projet :
Pas dedans
la source
Spécifiquement pour les utilisateurs de 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:
Vous devez effectuer cette opération une seule fois pour encoder le fichier .gitignore de ce répertoire, et puisque le fichier est ensuite encodé correctement, chaque fois que vous éditerez le fichier à l'avenir, cela devrait fonctionner. Je pense que cela est dû à un problème avec GitHub qui n'est pas sur le point de lire le codage non UTF-8 pour un fichier .gitignore. Pour autant que je sache, ce problème n'a pas encore été résolu pour Windows. Ce n'est pas trop grave, juste une douleur à déboguer quand ça ne fonctionne pas.
la source
Il peut y avoir un autre problème avec
.gitignore
cela, en particulier pour un utilisateur Windows. Git n'aime pas ça quand vous nommez.gitignore
(commeunity.gitignore
).Vous voudrez toujours le nommer
.gitignore
, ou sous Windows,.gitignore.
car Windows pense que vous essayez de le renommer sans nom de fichier.la source
Je viens de rencontrer ce problème. Le contenu de mon fichier .gitignore a continué à apparaître dans la liste des fichiers non suivis.
J'utilisais ceci pour créer le fichier ignoré:
Il s'avère que les doubles citations me causaient le problème. J'ai supprimé le fichier ignoré, puis utilisé à nouveau la commande sans guillemets, et cela a fonctionné comme prévu. Je n'avais pas besoin de jouer avec l'encodage des fichiers. Je suis sur une machine Windows 10 utilisant Cmder .
Exemple:
la source
Pour moi, aucune des réponses précédentes n'a fonctionné. J'ai dû copier du
.gitignore
texte dans leexclude.txt
fichier trouvé àUne fois terminé, actualisez vos modifications et tous les fichiers non suivis ont disparu. Engagez-vous comme d'habitude.
la source
Mon problème était (comme OP l'a suggéré) un fichier .gitignore corrompu. Je n'ai pas cru que c'était le cas et j'ai ignoré la possibilité jusqu'à ce que tout le reste échoue. La corruption n'est pas
vi
apparue, mais il y avait deux octets au début du fichier qui ont provoqué l'ignorance du fichier .gitignore. Pour moi, ceux-ci n'apparaissent que lorsque je tapecat .gitignore
, ce qui montre:Je n'ai aucune idée de la façon dont ceux-ci se sont retrouvés là-bas, mais recréer le fichier a résolu le problème. Une analyse hexadécimale du fichier corrompu a montré ce qui suit:
la source
J'ai eu ce problème, avec un fichier .gitignore contenant cette ligne:
Je viens de réaliser qu'en fait, ce répertoire est un lien symbolique vers un dossier ailleurs:
Sur la ligne
lib/ext/
, Git recherche en fait un dossier , mais un lien symbolique est un fichier , donc monlib
dossier n'est pas ignoré.J'ai corrigé cela en remplaçant
lib/ext/
parlib/ext
dans mon fichier .gitignore.la source
J'ai eu le même problème. Je crois que le problème était un écart CR vs CR + LF. J'ai caché des choses dans mon .gitignore en utilisant CMD (sur Windows 7) et la commande suivante:
Mauvais:
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 a parfaitement fonctionné.
Essayez de modifier votre .gitignore dans Notepad ++ ou Vim (idéalement). Même si le fichier semble être correctement formaté, essayez de remplacer les retours à la ligne. Cela semble bizarre, je sais, mais cela a fonctionné pour moi. :RÉ
la source
OK, donc dans mon cas, la solution acceptée n'a pas fonctionné, et ce qui a fonctionné est décrit ici:
Visual Studio 2013 ignore-t-il votre fichier .gitignore?
En bref:
ms-persist.xml
la source
Une chose à regarder également: Enregistrez-vous votre fichier .gitignore avec les fins de ligne correctes?
Les fenêtres:
Si vous l'utilisez sous Windows, l'enregistrez-vous avec des fins de ligne Windows? Tous les programmes ne le feront pas par défaut; Notepad ++ et de nombreux éditeurs PHP utilisent par défaut les fins de ligne Linux afin que les fichiers soient compatibles avec le serveur. Une façon simple de vérifier cela est d'ouvrir le fichier dans le Bloc-notes Windows. Si tout apparaît sur une seule 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 qu'Emacs ou nano . Si vous voyez des caractères non imprimables, le fichier a été enregistré avec des fins de ligne Windows.
la source
Une autre raison possible - quelques instances de clients Git fonctionnant en même temps . Par exemple, "git shell" + "GitHub Desktop", etc.
Cela m'est arrivé. J'utilisais "GitHub Desktop" comme client principal, et il ignorait certains nouveaux paramètres .gitignore: commit après commit:
Raison : l'éditeur de code Visual Studio s'exécutait en arrière-plan avec le même référentiel ouvert. Visual Studio Code a un contrôle Git intégré, ce qui crée certains conflits.
Solution : vérifiez plusieurs clients Git cachés et utilisez un seul client Git à la fois, en particulier lors de l'effacement du cache Git.
la source
Il y a déjà de bonnes réponses, mais ma situation était fastidieuse. J'avais édité la source d'un logiciel PLM (gestion du cycle de vie des produits) installé sur Win10 et décidé ensuite: "J'aurais probablement dû en faire un dépôt git."
Ainsi, l'option de cache ne fonctionnera pas directement pour moi. Publier pour d'autres personnes qui peuvent avoir ajouté le contrôle des sources APRÈS avoir fait un tas de travail initial ET
.gitignore
ne fonctionne pas MAIS, vous pourriez avoir peur de perdre un tas de travail, donc cegit rm --cached
n'est pas pour vous.!IMPORTANT: C'est vraiment parce que j'ai ajouté git trop tard à un "projet" trop gros et qui semble ignorer mon .gitignore. Je n'ai AUCUN engagement, jamais. Je peux git loin avec ça :)
Tout d'abord, je viens de faire:
Ensuite, je devais avoir une photo de mes changements. Encore une fois, c'est un produit d'installation sur lequel j'ai apporté des modifications. Trop tard pour un premier commit de pure master branch. Donc, j'avais besoin d'une liste de ce que j'avais changé depuis que j'avais installé le programme en ajoutant
> changed.log
à l'un des éléments suivants:PowerShell
Frapper
Maintenant, j'ai ma liste de ce que j'ai changé au cours des dix derniers jours (n'entrons pas dans les meilleures pratiques ici sinon pour dire, oui, je me suis fait ça).
Pour un nouveau départ, maintenant:
J'ai dû comparer ma liste modifiée à mon .gitignore grandissant, en cours d'exécution
git status
d' fur et mesure que je l'améliorais, mais mes modifications dans .gitignore sont lues au fur et à mesure.Enfin, j'ai la liste des changements souhaités! Dans mon cas, c'est passe-partout - certains thèmes fonctionnent avec plusieurs configurations XML spécifiques à l'exécution d'un système de développement contre ce logiciel que je veux mettre en dépôt pour que d'autres développeurs saisissent et contribuent ... Ce sera notre branche principale, donc s'engager, pousser et enfin BRANCHER pour de nouveaux travaux!
la source
Supprimez simplement le dossier ou le fichier, qui a été validé précédemment dans Git, par la commande suivante. Ensuite, le fichier gitignore reflétera les fichiers corrects.
la source
Une chose délicate non couverte par les autres réponses ici est que le fichier .gitignore ne fonctionnera pas si vous avez des commentaires en ligne, comme ceci:
Donc, si vous avez des commentaires comme ça, changez-les comme ceci:
la source
Il est également possible que vous ayez modifié le
.gitignore
fichier avec unesudo
commande. J'ai rencontré le même problème et lors de l'exécution des commandes:,git status
je pouvais toujours voir les fichiers "devrait être ignoré".Lors de l'édition avec
nano .gitignore
au lieu desudo nano .gitignore
, j'ai pu voir le reflet correct.la source
J'ai créé .gitignore à l'aide
echo "..." > .gitignore
de PowerShell dans Windows, car il ne me permet pas de le créer dans l'Explorateur Windows.Le problème dans mon cas était l'encodage du fichier créé, et le problème a été résolu après l'avoir changé en ANSI.
la source
Moi aussi j'ai le même problème sur Ubuntu, j'ai créé le
.gitignore
depuis le terminal et ça marche pour moitouch .gitignore
la source
Le mien ne fonctionnait pas parce que j'ai littéralement créé un document texte appelé .gitignore
Au lieu de cela, créez un document texte, ouvrez-le dans le Bloc-notes ++, puis enregistrez-le au format .gitignore
Assurez-vous de sélectionner Tous les types (*. *) Dans la liste déroulante lorsque vous l'enregistrez.
Ou dans gitbash, utilisez simplement
touch .gitignore
la source
Si vous êtes un utilisateur Notepad ++ , essayez de procéder comme suit:
Ouvrez votre fichier .gitignore à l'aide de Notepad ++ et faites:
Menu Édition → Conversion EOL → Format Windows → Enregistrer .
Essayez d'utiliser à
git status
nouveau et voyez si cela fonctionne pour vous.J'ai posté la réponse à une question similaire ici .
la source
Pour moi, c'était encore un autre problème. Mon fichier .gitignore est configuré pour ignorer tout sauf les choses que je lui dis de ne pas ignorer. Comme tel:
Maintenant, cela signifie évidemment que je dis également à Git d'ignorer le fichier .gitignore lui-même. Ce qui n'était pas un problème tant que je ne suivais pas le fichier .gitignore. Mais à un moment donné, j'ai commis le fichier .gitignore lui-même. Cela a ensuite conduit à ignorer correctement le fichier .gitignore.
Donc, l'ajout d'une ligne supplémentaire l'a corrigé:
la source
Mon problème est que j'ai noté les fichiers à ignorer avec des guillemets "" et non avec une barre oblique /.
Cela n'a pas fonctionné et a été ignoré par git:
Cela a très bien fonctionné:
J'ai également vérifié l'encodage de mon fichier dans Windows avec Notepad ++. Le codage a été défini sur UTF-8.
la source