Git commit -a «fichiers non suivis»?

92

Lorsque je fais un git commit -a, je vois ce qui suit:

  # Please enter the commit message for your changes. Lines starting
  # with '#' will be ignored, and an empty message aborts the commit.
  # On branch better_tag_show
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  # modified:   ../assets/stylesheets/application.css
  # modified:   ../views/pages/home.html.erb
  # modified:   ../views/tags/show.html.erb
  # modified:   ../../db/seeds.rb
  #
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  # ../assets/stylesheets/
  # ../views/pages/

Que signifient ces fichiers non suivis? Tous les changements ont en effet été suivis. Je ne comprends pas pourquoi git me prévient des fichiers non suivis ici.

MODIFIER :

Ok, je vois beaucoup de réponses confuses. C'est ce qui se passe après git commit -acela.

# On branch master
nothing to commit (working directory clean)

Comme vous pouvez le voir, il n'y a RIEN autre que ces quatre fichiers pour lesquels des modifications ont été appliquées.

Ma question devrait être reformulée comme suit: Pourquoi git m'avertit-il des fichiers non suivis alors que toutes les modifications de ce commit ont été suivies?

En d'autres termes, l'avertissement non suivi dans le message git commit est-il inutile ?

disparu
la source
1
(use "git add <file>..." to include in what will be committed)
zengr
1
zengr qui n'est pas nécessaire car git commit -a validera toutes les modifications dans les fichiers qui ont été suivis.
disparu
3
Il est nécessaire lorsque les fichiers ont jamais été added jusqu'à présent. Depuis la documentation pour -a: Dites à la commande de mettre en scène automatiquement les fichiers qui ont été modifiés et supprimés, mais les nouveaux fichiers dont vous n'avez pas parlé à git ne sont pas affectés .
Noufal Ibrahim
Pourquoi dites-vous que git vous «avertit»? Comme je le vois, le message des fichiers «non suivis» est informatif. C'est à vous de voir si ces fichiers doivent être gérés et d'agir en conséquence.
sateesh
@sateesh Eh bien, peu importe comment vous voulez l'appeler, je ne pense toujours pas que cela soit vraiment utile. En quoi est-ce informatif? Qu'est-ce que je suis supposé faire? Avez-vous lu mon message dans la section "MODIFIER" où j'ai écrit qu'il n'y a aucune modification sur aucun autre fichier à l'exception de ceux énumérés ci-dessus? Si vous trouvez cela informatif, cela équivaut à vous dire que tout dossier aléatoire de votre arborescence de dépôt ne sera pas suivi lorsqu'il n'y a rien à craindre.
disparu

Réponses:

105

Pour les autres ayant le même problème, essayez d'exécuter

git add . qui ajoutera tous les fichiers du répertoire actuel à suivre (y compris les fichiers non suivis), puis utilisera

git commit -a pour valider tous les fichiers suivis.

Comme suggéré par @Pacerier, une doublure qui fait la même chose est

git add -A

coding_idiot
la source
4
git commit -avalidera tous les fichiers suivis, pas les fichiers non suivis. git add .suivra les fichiers non suivis dans le répertoire actuel. git add -asuivra tous les fichiers non suivis.
ici le
@matteo git add -A, non git commit -A. Pour autant que je git commitsache , il n'y a aucun commutateur auquel vous pouvez passer qui inclut les fichiers non suivis.
Len
1
-a semble être obsolète pour A seulement maintenant. Merci tout de même. :)
tcratius le
Pour plus d'informations sur ces commandes, vous pouvez consulter: stackoverflow.com/questions/572549/…
Onat Korucu
30

git commit -am "msg"n'est pas la même chose que git add fileetgit commit -m "msg"

Si vous avez des fichiers qui n'ont jamais été ajoutés au suivi git, vous devez toujours le faire git add file

La commande «git commit -a» est un raccourci vers un processus en deux étapes. Après avoir modifié un fichier déjà connu par le référentiel, vous devez toujours dire au référentiel: «Hé! Je veux l'ajouter aux fichiers intermédiaires et éventuellement vous le confier. » Cela se fait en exécutant la commande «git add». «Git commit -a» prépare le fichier et le valide en une seule étape.

Source: "git commit -a" et "git add"

zengr
la source
mais, comme vous l'avez dit git commit -a = git add. + git commit pourquoi n'ajouterait-il pas automatiquement le fichier à la zone de suivi ?? ....
Johnny
1
@Johnny: git commit -an'est pas égal à git add .+ git commit. L' git addétape ajoute uniquement les fichiers répertoriés comme modifiés dans votre git status, pas tout dans le répertoire en cours.
Soren Bjornstad
Ouais, j'ai découvert ça aujourd'hui!
KansaiRobot
9

Vous devez taper dans la ligne de commande

git add --all

Cela validera tous les fichiers non suivis

Éditer:

Après avoir préparé vos fichiers, ils sont prêts pour la validation, votre prochaine commande devrait donc être

git commit -am "Your commit message"
Travis Delly
la source
5
Cela met en scène tous les fichiers, pas les valider . Vous devez toujours le faire séparément.
Saeb Amini
8
  1. Vous devez d'abord ajouter tous les fichiers non suivis. Utilisez cette ligne de commande:

    git add *

  2. Puis validez en utilisant cette ligne de commande:

    git commit -a

Mohamad
la source
7

Si vous rencontrez des problèmes avec des fichiers non suivis, ce script de 3 lignes vous aidera.

git rm -r --cached .
git add -A
git commit -am 'fix'

Alors juste git push

AliFurkan
la source
Cela fonctionne pour moi parce que je devais annuler le suivi des fichiers suivis que j'ignore maintenant.
spyder man le
2

Comme son nom l'indique, les «fichiers non suivis» sont les fichiers qui ne sont pas suivis par git. Ils ne se trouvent pas dans votre zone de transit et ne faisaient partie d'aucun commit précédent. Si vous voulez qu'ils soient versionnés (ou qu'ils soient gérés par git), vous pouvez le faire en disant à 'git' en utilisant 'git add'. Consultez ce chapitre Enregistrer les modifications dans le référentiel dans le livre Progit qui utilise un joli visuel pour fournir une bonne explication sur l'enregistrement des modifications dans git repo et expliquant également les termes `` suivi '' et `` non suivi ''

satin
la source
0

Assurez-vous que vous êtes dans le bon répertoire (dossier principal du référentiel) dans votre git local afin qu'il puisse trouver la configuration du dossier .git avant de valider ou d'ajouter des fichiers.

Einarc
la source
Cela ne répond pas à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous sa publication. - De l'avis
sampathsris
-1
git add --all

Cela résoudra le fichier non suivi .Ajoutez tout le fichier dans le répertoire grâce à @travis delly

lave
la source
Cette réponse a déjà été suggérée.
Per Svensson
pourriez-vous s'il vous plaît supprimer downvote.Ensuite, je supprimerai ma réponse
lave