Il y a un fichier qui était suivi par Git, mais maintenant le fichier est sur le .gitignore
liste. Cependant, ce fichier continue à apparaître dans git status
après qu'il ait été édité. Comment puis-je forcer Git à l'oublier complètement ?
Le processus qui a fonctionné pour moi était 1. commiter les changements en attente d'abord 2. git rm --cached <file> et commiter à nouveau 3. ajouter le fichier à .gitignore, vérifier avec git status et commiter à nouveau
31 votes
git clean -X
semble similaire, mais elle ne s'applique pas dans cette situation (lorsque les fichiers sont encore suivis par Git). J'écris ceci pour que les personnes qui cherchent une solution ne suivent pas la mauvaise voie.54 votes
La seule vraie réponse à cette question se trouve en bas, voir
git update-index --assume-unchanged
. Cette solution 1) conserve le fichier sur le serveur (index), 2) vous permet de le modifier librement en local.18 votes
Vous devez utiliser
--skip-worktree
voir : stackoverflow.com/questions/13630849/161 votes
Une question importante est : le fichier doit-il rester dans le référentiel ou non ? Par exemple, si quelqu'un d'autre clone le dépôt, doit-il obtenir le fichier ou non ? Si OUI puis
git update-index --assume-unchanged <file>
est correct et le fichier restera dans le référentiel et les changements ne seront pas ajoutés avec la commandegit add
. Si NON (par exemple, il s'agissait d'un fichier cache, d'un fichier généré, etc.git rm --cached <file>
le supprimera du référentiel.18 votes
@Martin @Qwerty Tout le monde devrait s'arrêter pour conseiller de
--assume-unchanged
qui est pour la performance afin d'empêcher git de vérifier l'état des gros fichiers suivis mais qui préfère--skip-worktree
qui est pour les fichiers suivis modifiés que l'utilisateur ne veut plus commettre. Voir stackoverflow.com/questions/13630849/0 votes
Duplicata possible de Comment arrêter le suivi et ignorer les modifications d'un fichier dans Git ?
2 votes
git update-index --assume-unchanged <file>
a un sérieux problème que je viens de rencontrer : exécutergit stash
après avoir apporté des modifications locales à ce fichier "ignoré", toutes les modifications locales seront perdues (c'est-à-dire quegit stash pop
ne les ramènera pas)1 votes
J'ai essayé mais il semble que lorsque j'essaye de tirer, cela ne fonctionne pas et donne une erreur du type ''.
Your local changes to the following files would be overwritten by merge
0 votes
Étroitement lié : Forcer l'ajout malgré le fichier .gitignore