J'essaye de pousser mes fichiers vers github en utilisant bash. Ils sont déjà là-bas, et je télécharge une version plus récente avec de nouvelles lignes et du code, etc. Mais quand j'essaye git add
et puis git status
il dit:
Sur le maître de succursale
rien à valider, le répertoire de travail est nettoyé
Et le fichier que j'utilise vient d'être modifié.
git diff
(ougit status
) ne montre rien qui explique pourquoi il n'y a rien à ajouter. Donc la question est vraiment: "Pourquoi git ne reconnaît-il pas que mon fichier a été modifié?"Réponses:
J'ai eu un problème où il était une fois que je définissais l'index git sur "assume inchangé" sur mon fichier.
Vous pouvez dire à git d'arrêter d'ignorer les modifications apportées au fichier avec:
Si cela n'aide pas, une réinitialisation peut suffire pour d'autres cas étranges.
Dans la pratique, j'ai trouvé la suppression du fichier mis en cache et sa réinitialisation pour qu'il fonctionne:
Le
git rm --cached
moyen de supprimer uniquement le fichier de l'index, etreset
dit à git de recharger l'index git à partir du dernier commit.la source
git add -f path/to/the/file
il ajoutera de force les fichiers pour la validation.git add -f
le fichier qui était dans cet état "supposé inchangé", et cela n'a pas fonctionné - j'ai dû soitgit update-index
ougit rm --cached
suivi d'ungit reset
pour le faire fonctionner.git rm --cached -r .
et ensuitegit reset .
.git update-index --no-skip-worktree path/to/file
Vérifiez votre
.gitignore
dossier . Vous constaterez peut-être que le fichier, l'extension du fichier ou le chemin d'accès au fichier avec.gitignore
lequel vous essayez de travailler correspond à une entrée , ce qui expliquerait pourquoi ce fichier est ignoré (et non reconnu comme un fichier modifié).Cela s'est avéré être le cas pour moi lorsque j'ai eu un problème similaire.
la source
lib/
, ce qui fait que git ignore ce dossier. Il n'y a aucun problème avec cela - du moins si ce dossier n'est pas le dossier principal de votre projet, comme ce qui m'est arrivé.Comme cela a déjà été discuté, les fichiers ont probablement été marqués avec "assume-inchangé", ce qui dit fondamentalement à git que vous ne modifierez pas les fichiers, donc il n'a 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 la documentation:
Cela forcera fondamentalement git à suivre les modifications de tous les fichiers indépendamment des indicateurs "assume-inchangé".
la source
git status
, aucun fichier n'est modifié, maisgit add .
ajoute deux fichiers, etgit update-index --really-refresh
dit que ces deux ont besoin de mises à jour, mais ne semble rien faire. Une idée?git ls-files -v | grep '^[[:lower:]]'
si rien ne vous aide, vous devriez créer une question avec plus de détails afin que nous puissions vous aider tu.eh bien nous n'avons pas assez pour répondre à cette question alors je vais vous donner plusieurs suppositions:
1) vous avez caché vos modifications, pour corriger le type:
git stash pop
2) vous avez eu des changements et vous les avez validés, vous devriez pouvoir voir votre commit dans
git log
3) vous avez fait des modifications d'une sorte
git reset --hard
ou d'une autre, vos modifications peuvent être là dans le reflog, tapezgit reflog --all
suivi de la vérification ou de la sélection de la référence si jamais vous la trouvez.4) vous avez extrait le même repo plusieurs fois et vous vous êtes trompé.
la source
git commit --amend
mettre vos nouveaux changements dans votre dernier commit , ne faites pas cela si vous avez déjà partagé votre commit.Cela semble fou, mais parfois vous n'êtes pas dans le bon repo même si vous pensez que vous l'êtes. Par exemple, vous avez peut-être déplacé le répertoire parent, mais vous avez oublié de changer de dépôt dans votre éditeur de texte. Ou vice versa: vous êtes dans le bon référentiel dans l'éditeur de texte mais dans le mauvais référentiel en ligne de commande. Dans la première situation, vous apportez vos modifications dans le bon 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 deuxième situation, vous avez en fait édité le bon fichier, mais votre ligne de commande git ne reconnaîtra pas la modification car vous n'êtes pas dans le bon répertoire sur la ligne de commande.
la source
Il s'est passé une chose géniale comme celle-ci. Le plugin git d'Eclipse Kepler marquait automatiquement tous mes dossiers de projet comme ignorés dans le dossier .gitignore.
Quand j'eu à
commit
leTeam
menu, ils seraient tous ensemble à dos ignoré. Pour autant que je sache, c'était parce que je les avais définis comme dérivés dans le projet parent. Les décocher commedervied
corrigé ce problème . Je n'avais jamais vu ça sur Indigo. J'espère que cela aide quelqu'un.la source
Cela s'est produit sur Windows lors de la modification de fichiers en transférant les différences via l'outil WinMerge. Apparemment, WinMerge (du moins la façon dont il est configuré sur mon ordinateur) ne met parfois pas à jour les horodatages des fichiers modifiés.
Sous Windows, git status utilise, entre autres, l'horodatage d'un fichier et les modifications de la taille du fichier pour déterminer si un fichier a changé ou non. Ainsi, comme l'horodatage n'a pas été mis à jour, il ne disposait que de la taille du fichier. Malheureusement, le fichier en question était un simple fichier de version dont le contenu est passé 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 qui avaient une taille différente après la modification ont été détectés très bien par l' état de git .
la source
J'ai eu un problème similaire lors de l'utilisation de 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 "branche déjà à jour". J'ai compris que, malgré l'enregistrement des mises à jour dans l'éditeur de texte, le fichier était en fait inchangé. Ouvrir le fichier dans un autre éditeur et enregistrer les modifications a fonctionné pour moi.
la source
TL, DR; Êtes-vous même sur le bon référentiel?
Mon histoire est un peu drôle mais je pensais que cela pouvait arriver avec quelqu'un qui pourrait avoir un scénario similaire, alors partagez-le ici.
En fait, sur ma machine, j'avais deux référentiels git distincts
repo1
etrepo2
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 par intermittence dans mon entreprise. Maintenant, le fait est que, comme directive standard, la structure de répertoire du code source de tous les produits est exactement la même dans mon entreprise.Donc, sans m'en rendre compte, j'ai modifié un fichier exactement du même nom dans
repo2
lequel je devais changerrepo1
. Alors, je continuais commande en cours d' exécutiongit status
surrepo1
et il a continué de donner le même messagependant une demi-heure. Ensuite, mon collègue l'a observé comme une paire d'yeux indépendante et m'a signalé que j'étais dans un référentiel erroné mais très similaire. Le moment où je suis passé à
repo1
Git a commencé à remarquer les fichiers modifiés.Cas pas si courant. Mais tu ne sais jamais!
la source
Avez-vous déplacé le répertoire sous votre shell? Cela peut se produire si vous avez restauré votre projet à partir d'une sauvegarde. Pour résoudre ce problème,
cd
sortez et revenez:la source
En général, avec ce problème, vérifiez d'abord que vous modifiez le fichier que vous pensez être! J'ai eu ce problème lorsque je modifiais un fichier JavaScript transpilé au lieu du fichier source (la version transpilée n'était pas sous le contrôle de la source).
la source
Mon client Git (Gitg) a causé ce problème pour moi. Les commandes normales que j'exécutais habituellement ne fonctionnaient pas. Même toucher tous les fichiers du projet ne fonctionnait pas.
J'ai trouvé un moyen de le réparer et je ne sais toujours pas ce qui l'a causé. Copiez votre répertoire de projet. Les fichiers manquants apparaîtront dans le répertoire copié
git status
. Renommer peut faire la même chose.la source
Ran dans le problème, mais il n'y avait que deux répertoires et je ne savais pas que ces deux répertoires ont fini par être configurés en tant que sous-modules git. Comment cela s'est-il passé, je n'en ai aucune idée, mais le processus consistait à suivre certaines des instructions sur ce lien, mais PAS à supprimer le répertoire (comme il le fait à la fin) mais plutôt à le faire
git add path/to/dir
la source
Lorsque vous modifiez un fichier dans Visual Studio, il est répertorié instantanément dans les modifications git, même si le fichier n'est pas enregistré. Il vous suffit donc de sauvegarder le fichier manuellement (Ctrl + S pour le fichier actuellement affiché ou Ctrl + Shift + S pour tous les fichiers du projet) et git bash les récupérera.
la source
.js
fichier, en travaillant avec Visual Studio Code. Je vous remercie.Quel type de fichier avez-vous essayé de télécharger? Maintenant, je passe presque une heure à télécharger ma modification css. Mais ce css compilé à partir d'un fichier styl donc git l'a simplement ignoré. Lorsque j'ai changé la source de style, tout a fonctionné.
J'espère que ça aide.
la source
Cela dépend parfois et par version de git et si vous oubliez de le faire
git add .
.Pour vérifier votre modification sur le référentiel, utilisez toujours
git status
cette option pour afficher tous les fichiers non suivis et modifiés. Parce quegit diff
montrer uniquement les fichiers ajoutés.la source
Assurez-vous de ne pas créer de liens symboliques (
ln -s source dest
) à l'intérieur de Git Bash pour Windows.Il ne crée PAS de liens symboliques, mais fait une copie DEEP de la source vers la destination
J'ai eu le même comportement que OP sur un terminal MINGW64 de Git Bash pour Windows (version 2.16.2) pour réaliser que mes modifications `` éditées '' se trouvaient en fait dans le répertoire d'origine et que mes commandes git bash provenaient d'une copie profonde qui était restée inchangé.
la source
J'ai eu le même problème. Il s'avère que j'avais deux copies du projet et que mon terminal était dans le mauvais dossier de projet!
la source
Cela m'est aussi arrivé, j'ai essayé les méthodes mentionnées ci-dessus et rien n'y a aidé. Ensuite, la solution était de changer le fichier via le terminal, pas l'interface graphique. Je ne sais pas pourquoi cela a fonctionné mais a fonctionné. Après avoir édité le fichier via nano à partir du terminal, git l'a reconnu comme modifié et j'ai pu l'ajouter et le valider.
la source
J'ai le même problème ici VS2015 n'a pas reconnu les modifications de mes fichiers js, la suppression des télécommandes des paramètres du référentiel, puis la réajout du chemin d'URL distant a résolu mon problème.
la source
J'ai eu un problème similaire lorsque j'ai créé un fichier de correctif sur le serveur avec l'éditeur vi. Il semble que le problème soit lié à l'espacement. Quand j'ai poussé le patch depuis le local, le déploiement était correct.
la source
J'ai eu ce problème. Le mien ne fonctionnait pas car je mettais mes fichiers dans le dossier .git de mon projet.
la source
Dans mon cas, faire un
git reset --hard
des fichiers supprimés et laisser des dossiers vides. Après avoir inspecté le contenu, j'ai remarqué que les répertoires étaient vides.Cependant, git ignore les dossiers vides. (Correction, git ignore tous les répertoires car il suit le contenu, les dossiers vides ne sont pas du contenu.)
la source
essayez d'utiliser
git add *
alorsgit commit
la source