Pourquoi git ne reconnaît-il pas que mon fichier a été modifié? Par conséquent, git add ne fonctionne pas

J’essaie de pousser mes fichiers vers github en utilisant bash. Ils sont déjà là, et je télécharge une nouvelle version avec de nouvelles lignes et du nouveau code, etc.

Sur maître de twig

rien à commettre, répertoire de travail propre

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

J’ai eu un problème où, il était une fois, je définissais l’index git pour «assumer inchangé» sur mon fichier.

Vous pouvez dire à git d’arrêter d’ignorer les modifications apscopes au fichier avec:

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

Si cela ne vous aide pas, une réinitialisation peut suffire pour d’autres cas étranges.


En pratique, j’ai trouvé de supprimer le fichier en cache et de le réinitialiser pour fonctionner:

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

git rm --cached signifie uniquement supprimer le fichier de l’index et reset demande à git de recharger l’index git à partir du dernier commit.

Une autre raison possible (qui s’est avérée vraie dans mon cas actuel). Vérifiez votre fichier .gitignore . Vous trouverez peut-être que le fichier ou l’extension du fichier que vous essayez d’ .gitignore est inscrit dans .gitignore ce qui expliquerait pourquoi il n’est pas reconnu en tant que fichier modifié.

Eh bien, nous n’avons pas assez de réponses à cette question, alors je vais vous donner plusieurs hypothèses:

1) vous avez caché vos modifications, pour corriger le type: git stash pop

2) vous aviez des changements et vous les avez validés, vous devriez pouvoir voir votre commit dans git log

3) vous avez eu des modifications faites une sorte de git reset --hard ou autre, vos modifications peuvent être présentes dans le reflog, tapez git reflog --all suivi de la vérification ou de la sélection du ref si vous le trouvez.

4) vous avez vérifié le même repo plusieurs fois et vous êtes dans le mauvais.

Avait une chose funky comme ça se passe. Le plug-in git d’Eclipse Kepler marquait automatiquement tous mes dossiers de projet comme étant ignorés dans le dossier .gitignore.

Quand je devais commit dans le menu Team , ils reviendraient tous à ignoré. Pour autant que je sache, c’était parce que je les définissais comme dérivées dans le projet parent. Les démarquant comme dervied corrigé cela. Je n’avais jamais vu ça auparavant sur Indigo. J’espère que ça aide quelqu’un.

Cela s’est produit sous Windows lors de la modification de fichiers en transférant des différences via l’outil WinMerge. Apparemment, WinMerge (au moins de la manière dont il est configuré sur mon ordinateur) ne met parfois pas à jour l’horodatage des fichiers qu’il modifie.

Sous Windows, l’ état de git utilise, entre autres choses, l’horodatage d’un fichier et les modifications de la taille du fichier pour déterminer si un fichier a été modifié ou non. Comme l’horodatage n’a pas été mis à jour, la taille du fichier n’a pas été dépassée. Malheureusement, le fichier en question était un simple fichier de version où le contenu passait de 7.1.2 à 7.2.0 . En d’autres termes, la taille du fichier est également restée inchangée. D’autres fichiers qui ont également été modifiés par WinMerge et dont l’horodatage n’a pas été mis à jour, mais dont la taille était différente après que le changement ait été détecté par le statut git, étaient tout à fait corrects.

J’ai eu un problème similaire en utilisant Sublime Text-3 . Après avoir apporté de nouvelles modifications au code et l’avoir sauvegardé, lorsque j’ai essayé les commandes git add ./status, la réponse était “twig déjà à jour”. J’ai compris, indépendamment de l’enregistrement des mises à jour dans l’éditeur de texte, que le fichier était en réalité inchangé. Ouvrir le fichier dans un autre éditeur et enregistrer les modifications a fonctionné pour moi.

Quel type de fichier avez-vous essayé de télécharger? Maintenant, je passe juste une heure à télécharger ma modification de CSS. Mais ce css compilé à partir d’un fichier stylé donc git l’a simplement ignoré. Lorsque j’ai changé de source de style, tout a fonctionné.

J’espère que cela aide.

J’ai eu ce problème. Le mien ne fonctionnait pas parce que je mettais mes fichiers dans le dossier .git de mon projet.

En général avec ce problème, vérifiez d’abord que vous éditez le fichier que vous pensez être! J’ai eu ce problème lorsque j’étais en train d’éditer un fichier JavaScript transpilé au lieu du fichier source (la version transstackd n’était pas sous le contrôle des sources).

Mon client Git (Gitg) a causé ce problème pour moi. Les commandes normales normalement exécutées ne fonctionnaient pas. Même toucher chaque fichier du projet ne fonctionnait pas.

J’ai trouvé un moyen de le réparer et je ne suis toujours pas sûr de ce qui l’a provoqué. Copiez le répertoire de votre projet. Les fichiers manquants apparaîtront dans le git status du répertoire copié. Renommer pourrait faire la même chose.

TL; DR; Êtes-vous même sur le bon repository?

Mon histoire est un peu drôle, mais je pensais que cela pouvait arriver à quelqu’un qui pourrait avoir un scénario similaire, donc le partager ici.

En fait, sur ma machine, j’avais deux référentiels git distincts repo1 et repo2 configurés dans le même répertoire racine nommé source . Ces deux référentiels sont essentiellement les référentiels de deux produits sur lesquels je travaille dans mon entreprise. Maintenant, le fait est que, en tant que directive standard, la structure de répertoire du code source de tous les produits est exactement la même dans mon entreprise.

Donc, sans me rendre compte, j’ai modifié exactement le même fichier nommé repo2 que je devais changer dans repo1 . Donc, j’ai juste continué à exécuter la commande git status sur repo1 et il continuait à donner le même message

Sur maître de twig

rien à commettre, répertoire de travail propre

pendant une demi-heure. Ensuite, mon collègue l’a observé en tant que paire d’œil indépendante et a porté cette chose à ma connaissance que je me trouvais dans un repository erroné mais très similaire. Au moment où je suis passé à repo1 Git a commencé à remarquer les fichiers modifiés.

Cas pas si commun Mais tu ne sais jamais!

Avez-vous déplacé le répertoire de sous votre shell? Cela peut arriver si vous avez restauré votre projet à partir d’une sauvegarde. Pour corriger cela, il suffit de sortir et de revenir dans:

 cd ../ cd - 

Parfois, cela dépend de la version git et si vous oubliez de le faire, git add . .

Pour vérifier votre modification sur le référentiel, utilisez toujours le git status qui affiche tous les fichiers non suivis et modifiés. Parce que git diff affiche uniquement les fichiers ajoutés.

Veillez à ne pas créer de liens symboliques ( ln -s source dest ) depuis Git Bash pour Windows.

Il ne fait pas de liens symboliques, mais une copie DEEP de la source vers le dest

J’ai eu le même comportement que OP sur un terminal MINGW64 de Git Bash pour Windows (version 2.16.2) pour me rendre compte que mes modifications «éditées» se trouvaient dans le répertoire d’origine et que mes commandes git bash provenaient d’une copie restante inchangé.

essayez d’utiliser git add * puis git commit