À la racine de mon projet, j'ai un foo
dossier. Dans le foo
dossier, j'ai un bar
dossier. Je souhaite ignorer toutes les modifications apportées à tous les fichiers de mon bar
dossier. J'ai ceci dans mon gitignore
:
/foo/bar
Le dossier est vérifié: il existe et il contient les fichiers à ignorer. gitignore
est commit
ted. Cependant, j'ai un fichier dans lequel je fais une moification et se trouve dans mon bar
dossier. Quand je tape
git status
dans mon git bash
je vois le fichier qui aurait dû être ignoré. Quelle pourrait être la raison et comment puis-je ignorer avec succès tous les fichiers dans mon dossier de barre?
Notez que les fichiers étaient auparavant ignorés avec la même ligne, mais j'ai dû temporairement supprimer cette ligne vers commit
quelque chose sur le serveur. Après le commit
, je remets la ligne dans le gitignore
. C'était il y a quelque temps, mais maintenant, j'ai observé que les fichiers seront au format git status
. Je m'attendrais à pouvoir modifier les fichiers ignorés sans qu'ils n'apparaissent dans le fichier git status
.
git add -f ignored-file
ajoutera un fichier même s'il est dans vos ignorés.git status foo/bar/file-that-should-be-ignored
donne?git log foo/bar/file-that-should-be-ignored
. S'il ne fait pas partie du référentiel, vous devez le supprimer avecgit rm --cached foo/bar/file-that-should-be-ignored
, puis le valider comme suggéré par Reck ci-dessous (bien que je le fasse simplement sur le fichier, pas sur le dossier entier). Cela (a) supprimera le fichier de Git, (b) conservera le fichier dans votre copie locale, et (c) provoquera la suppression du fichier lorsque d'autresfetch
oupull
le nouveau commit.Réponses:
Je suppose que ce dossier a déjà été vérifié dans git?
Exécutez
git rm -r --cached <folder>
et vérifiez à nouveau.la source
git update-index --assume-unchanged <folder>
peut-être?Pour moi, la réponse acceptée faisait partie de la solution, pas la solution entière. Peut-être que les autres étapes que je suis sur le point de publier étaient évidentes, mais je les ai manquées en premier. Voici les étapes que j'ai suivies pour m'assurer que mon
.gitignore
fichier ignore le dossier que je voulais qu'il ignore:git rm -r --cached .
(qui supprime tout de l'index git afin de rafraîchir votre référentiel git)git add .
(pour tout ajouter au référentiel)git commit -m ".gitignore Fixed"
Vous pouvez trouver le lien vers l'article d'où j'ai trouvé la solution ici .
la source
J'avais ce problème et j'ai réalisé que git ignorait en fait correctement les fichiers / dossiers, mais mon éditeur de code (Visual Studio Code) était juste bogué et ne les "grisait pas" correctement dans la barre latérale de l'interface utilisateur. J'ai redémarré VSCode et ils étaient grisés comme prévu.
la source
En complément de la réponse acceptée
Quand je fais cela, le terminal affiche un tas de
rm
fichiers pour dans ce répertoire. Donc, pour éviter un autre commit qui pourrait affecter inutilement la télécommande, j'ai fait:Après cela, il ne dit rien de s'engager et lorsque je modifie des fichiers à l'intérieur
/foo/bar/
et quegit status
je fais toujours un, je reçois toujoursnothing to commit
.la source