Gitignore ne fonctionne pas

Mon fichier .gitignore ne fonctionne pas pour une raison quelconque et aucune quantité de Google n’a été capable de la réparer. Voici ce que j’ai:

 *.apk *.ap_ *.dex *.class **/bin/ **/gen/ .gradle/ build/ local.properties **/proguard/ *.log 

C’est dans le répertoire master , qui est mon repository git. J’utilise Git 1.8.4.2 parce que je suis sur un MacBook sous OSX 10.8.6.

Les fichiers / dossiers de votre contrôle de version ne se supprimeront pas simplement parce que vous les avez ajoutés à .gitignore . Ils sont déjà dans le référentiel et vous devez les supprimer. Vous pouvez simplement faire cela avec ceci:

( N’oubliez pas de commettre tout ce que vous avez changé avant de le faire. )

 git rm -rf --cached . git add . 

Cela supprime tous les fichiers du référentiel et les ajoute (en respectant cette fois les règles de votre .gitignore ).

Pour débloquer un seul fichier qui a déjà été ajouté / initialisé dans votre référentiel, par exemple, arrêtez le suivi du fichier mais ne le supprimez pas de votre système: git rm --cached filename

Pour désélectionner tous les fichiers qui se .gitignore maintenant dans votre .gitignore :

Commencez par valider les modifications de code en attente, puis exécutez cette commande:

 git rm -r --cached . 

Cela supprime tous les fichiers modifiés de l’index (zone de transfert), puis lancez simplement:

 git add . 

Engagez-le:

 git commit -m ".gitignore is now working" 

Dans mon cas, c’était un espace vide au début du fichier qui apparaissait clairement lorsque j’ai ouvert le fichier dans le Bloc-notes, ce qui n’était pas évident dans le code Visual Studio.

Dans mon cas, les espaces blancs à la fin des lignes de .gitignore étaient la cause. Alors faites attention aux espaces blancs dans le .gitignore!

Après avoir fait un petit bout de lapin en essayant de suivre les réponses à cette question (peut-être parce que je devais le faire dans un projet de studio visuel), j’ai trouvé que le moyen le plus simple était de

  1. Couper et coller le ou les fichiers que je ne veux plus suivre dans un emplacement temporaire

  2. Valider la “suppression” de ces fichiers

  3. Valider une modification de .gitignore pour exclure les fichiers que j’avais temporairement déplacés

  4. Déplacer les fichiers dans le dossier.

J’ai trouvé que c’était le moyen le plus simple de s’y prendre (au moins dans un studio visuel, ou j’assumerais un autre environnement basé sur IDE comme Android Studio), sans me tirer accidentellement dans le pied avec un git rm -rf --cached . très envahissant git rm -rf --cached . , après quoi le projet de studio visuel sur lequel je travaillais ne s’est pas chargé.

J’ai résolu mon problème en procédant comme suit:

Tout d’abord, je suis un utilisateur de Windows, mais j’ai été confronté à un problème similaire. Donc, je poste ma solution ici.

Il y a une raison simple pour laquelle parfois le .gitignore ne fonctionne pas comme il est censé le faire. Cela est dû au comportement de conversion EOL.

Voici une solution rapide pour cela

Modifier> Conversion EOL> Format Windows> Enregistrer

Vous pouvez blâmer vos parameters d’éditeur de texte pour cela.

Par exemple:

En tant que développeur Windows, j’utilise généralement Notepad ++ pour éditer mon texte contrairement aux utilisateurs de Vim.

Donc, ce qui se passe est que lorsque j’ouvre mon fichier .gitignore en utilisant Notepad ++, cela ressemble à ceci:

 ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # See https://help.github.com/ignore-files/ for more about ignoring files. # User-specific files *.suo *.user *.userosscache *.sln.docstates *.dll *.force # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs 

Si j’ouvre le même fichier en utilisant le Bloc-notes par défaut, voici ce que j’obtiens

 ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # See https://help.github.com/ignore-files/ for more about ignoring files. # User-specific files *.suo *.user *.userosscache 

Donc, vous avez peut-être déjà deviné en regardant la sortie. Tout ce qui se trouve dans le fichier .gitignore est devenu une ligne à part, et comme il y a un ## au début, il se comporte comme si tout était commenté.

La façon de résoudre ce problème est simple: ouvrez simplement votre fichier .gitignore avec Notepad ++, puis procédez comme suit

Modifier> Conversion EOL> Format Windows> Enregistrer

La prochaine fois que vous ouvrez le même fichier avec le bloc-notes Windows par défaut, tout doit être correctement formaté. Essayez-le et voyez si cela fonctionne pour vous.

Est-ce que git reset --hard travail git reset --hard pour n’importe qui? Je ne dis pas que c’est une bonne solution, cela semblait juste fonctionner la première fois que j’ai essayé.