web-dev-qa-db-fra.com

Pourquoi 'git commit' n'enregistre-t-il pas mes modifications?

J'ai fait un git commit -m "message" comme ceci:

> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

Mais après, quand je fais git status, il affiche les mêmes fichiers modifiés:

> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

Qu'est-ce que je fais mal?

238
arezzo

Comme le message le dit:

aucune modification n'a été ajoutée à commit (utilisez "git add" et/ou "git commit -a")

Git a une "zone de stockage intermédiaire" dans laquelle les fichiers doivent être ajoutés avant d'être validés, vous pouvez en lire l'explication ici .


Pour votre exemple spécifique, vous pouvez utiliser:

git commit -am "save arezzo files"

(notez que la variable a supplémentaire dans les drapeaux peut également être écrite sous la forme git commit -a -m "message" - les deux font la même chose)

Si vous souhaitez être plus sélectif quant à ce que vous ajoutez au commit, vous utilisez la commande git add pour ajouter les fichiers appropriés à la zone de transfert et git status pour prévisualiser ce qui va être ajouté (en gardant à l’esprit le libellé utilisé).

Vous pouvez également trouver de la documentation générale et des didacticiels sur l’utilisation de git sur la page de documentation git, qui vous donnera plus de détails sur le concept de transfert/ajout de fichiers.


Une autre chose à savoir est la mise en scène interactive - vous permet d'ajouter parties d'un fichier à la zone de mise en attente, donc si vous avez créé trois codes distincts modifications (pour des fonctionnalités liées mais différentes), vous pouvez utiliser le mode interactif pour scinder les modifications et ajouter/valider chaque partie. Avoir des commits spécifiques plus petits comme celui-ci peut être utile.

383
Peter Boughton

Vous n'avez pas ajouté les modifications. Soit les ajouter spécifiquement via

git add filename1 filename2

ou ajouter toutes les modifications (à partir du chemin racine du projet)

git add .

ou utilisez le raccourci -a en commettant:

git commit -a -m "message".
47
Femaref

Tu devrais faire:

git commit . -m "save arezzo files"
38
Baptiste Pernet

Vous auriez pu faire un:

git add -u -n

Pour vérifier quels fichiers vous avez modifiés et que vous allez ajouter (exécution à sec: option -n), puis

git add -u

Pour ajouter des fichiers simplement modifiés

7
Albert Vonpupp

J'ai copié un petit projet secondaire dont le contrôle de la source était Git dans un autre projet et j'ai oublié de supprimer le dossier .git. Lorsque je me suis engagé, j'ai reçu le même message que précédemment et je ne pouvais pas l'effacer tant que je n'avais pas supprimé le dossier .git.

C'est un peu idiot, mais il vaut la peine de vérifier que vous n'avez pas de dossier .git sous le dossier qui ne valide pas.

7
Simon Hutchison

Peut-être une chose évidente, mais ...

Si vous avez un problème avec l'index, utilisez git-gui . Vous avez une très bonne idée du fonctionnement de l’index (zone intermédiaire).

Une autre source d’information qui m’a aidé à comprendre l’index était Scott Chacons, «Getting Git» page 259 et suivantes.

J'ai commencé par utiliser la ligne de commande car la plupart des documents ne montraient que ...

Je pense que git-gui et gitk me font réellement travailler plus vite, et je me suis débarrassé de mauvaises habitudes comme "git pull" par exemple ... Maintenant, je vais toujours chercher en premier ... Voyez quels sont les nouveaux changements avant de fusionner.

4
Martin

La raison en est que vous avez un dossier déjà suivi par Git dans un autre dossier également suivi par Git. Par exemple, j'avais un projet et j'y ai ajouté un sous-dossier. Les deux ont été suivis par Git avant que je mette l'un dans l'autre. Pour arrêter de suivre celui qui se trouve à l'intérieur, trouvez-le et supprimez le fichier Git avec:

rm -rf .git

Dans mon cas, j'avais une application WordPress et le dossier que j'avais ajouté était un thème. Je devais donc aller à la racine du thème et supprimer le fichier Git afin que l'ensemble du projet soit désormais suivi par le parent, l'application WordPress.

4
drjorgepolanco

Je trouve ce problème apparaître lorsque j'ai effectué un git add . dans un sous-répertoire ci-dessous où réside mon fichier .gitignore (le répertoire de base de mon référentiel, pour ainsi dire). Essayez de changer de répertoire dans votre répertoire uppermost et d’exécuter git add . suivi de git commit -m "my commit message".

4
jam99

si vous avez plus de fichiers dans mon cas, j'ai 7000 fichiers image lorsque j'essaie de les ajouter à partir du dossier de route du projet, il n'a pas été ajouté eux mais quand je vais dans le dossier image, tout est ok. Parcourez le dossier cible et commandez comme suit

git add .
git commit -am "image uploading"
git Push Origin master

git Push Origin master Objets énumérant: 6574, terminé. Comptage d'objets: 100% (6574/6574), terminé. Compression Delta utilisant jusqu'à 4 threads Objets compressés: 100% (6347/6347), terminé. Objets d'écriture: 28% (1850/6569), 142,17 MiB | 414.00 KiB/s

0
physcode

J'ai eu un problème très similaire avec le même message d'erreur. "Les modifications ne sont pas mises en scène pour la validation", mais lorsque je fais un diff, cela montre des différences. J'ai finalement compris qu'il y a quelque temps, j'avais changé de dossier. ex. "PostgeSQL" à "postgresql". Comme je me souviens maintenant, parfois, git laissera un fichier ou deux dans l'ancien répertoire. Ensuite, vous allez valider une nouvelle version dans le nouveau cas.

Ainsi, git ne sait pas sur qui compter. Donc, pour le résoudre, je devais aller sur le site Web du github. Ensuite, vous pouvez voir les deux cas. Et vous devez supprimer tous les fichiers du répertoire casé incorrect. Assurez-vous d'avoir la bonne version sauvegardée ou dans le bon répertoire.

Une fois que vous avez supprimé tous les fichiers de l'ancien répertoire de cas, ce répertoire entier disparaîtra. Puis fais un commit.

À ce stade, vous devriez être capable de tirer sur votre ordinateur local et de ne plus voir les conflits. Ainsi, être capable de commettre à nouveau. :)

0
brianwaganer

J'ai eu un problème où je faisais commit --amend même après avoir émis un git add . et cela ne fonctionnait toujours pas. Il s'avère que j'ai fait quelques personnalisations .vimrc et que mon éditeur ne fonctionnait pas correctement. La correction de ces erreurs afin que vim renvoie le code correct a résolu le problème.

0
Brennan Cheung

si vous avez un sous-dossier, qui a été cloné à partir d'un autre référentiel git, vous devez d'abord supprimer le fichier $ .git $ du référentiel enfant: rm -rf .git Après cela, vous pouvez passer au dossier parent et utiliser git add -A

0
Sam Toorchi