172 votes

Pourquoi git ne reconnaît-il pas que mon fichier a été modifié, ce qui fait que git add ne fonctionne pas.

J'essaie de pousser mes fichiers vers github en utilisant bash. Ils y sont déjà, et je télécharge une version plus récente avec de nouvelles lignes, du code, etc. Mais lorsque j'essaie git add et ensuite git status il est dit :

Sur la branche master

rien à commettre, répertoire de travail propre

Et le fichier que j'utilise vient d'être modifié.

205voto

ThorSummoner Points 396

J'ai eu un problème où, une fois, j'ai mis l'index git à "assume unchanged" sur mon fichier.

Vous pouvez dire à git d'arrêter d'ignorer les modifications du fichier avec :

git update-index --no-assume-unchanged path/to/file

Si cela n'aide pas un réinitialiser peut être suffisant pour d'autres cas étranges.


En pratique, j'ai trouvé que supprimer le fichier en cache et le réinitialiser fonctionnait :

git rm --cached path/to/file
git reset path/to/file

El git rm --cached signifie seulement supprimer le fichier de l'index, et reset indique à git de recharger l'index git à partir du dernier commit.

41voto

Monroe Mann Points 373

Cela semble fou, mais parfois vous n'êtes pas dans le bon repo même si vous pensez l'être. Par exemple, vous avez peut-être déplacé le répertoire parent, mais vous avez oublié de changer de repo dans votre éditeur de texte. Ou vice versa : vous êtes dans le bon repo dans l'éditeur de texte mais dans le mauvais repo en ligne de commande. Dans la première situation, vous effectuez vos modifications dans la bonne fichier mais ce n'est pas le même dossier qui est ouvert dans votre ligne de commande, donc c'est en fait le mauvais fichier. Dans la seconde situation, vous avez effectivement édité le bon fichier, mais votre ligne de commande git ne reconnaît pas la modification parce que vous n'êtes pas dans le bon répertoire sur la ligne de commande.

33voto

Marc Eliot Stein Points 267

Vérifiez votre .gitignore fichier . Il se peut que le fichier, l'extension du fichier ou le chemin d'accès au fichier que vous essayez d'utiliser corresponde à une entrée de la base de données de l'Office. .gitignore Ce qui expliquerait pourquoi ce fichier est ignoré (et n'est pas reconnu comme un fichier modifié).

Cela s'est avéré être le cas pour moi lorsque j'ai eu un problème similaire.

15voto

André Cunha Points 131

Comme cela a déjà été discuté, les fichiers ont probablement été marqués avec "assume-unchanged", ce qui indique à git que vous ne modifierez pas les fichiers, et qu'il n'a donc pas besoin de suivre les changements avec eux. Cependant, cela peut affecter plusieurs fichiers, et s'il s'agit d'un grand espace de travail, vous ne voudrez peut-être pas les vérifier tous un par un. Dans ce cas, vous pouvez essayer : git update-index --really-refresh

selon les docs :

Like --refresh, but checks stat information unconditionally, without regard to the "assume unchanged" setting.

Cela forcera git à suivre les changements de tous les fichiers sans tenir compte des drapeaux "assume-unchanged".

14voto

ganesh Points 435

Les commandes suivantes ont fonctionné pour moi

rm .git/index

git reset

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