62 votes

git add -A n’ajoute pas tous les fichiers modifiés dans les répertoires

je tiens à ajouter tous les fichiers de n'importe quoi: s'il est supprimé, de création, de modification, sans traces, etc? je juste ne veux pas git add TOUS mes fichiers à CHAQUE FOIS. J'ai essayé la commande git add -A, mais c'est PAS l'ajout de fichiers modifiés à l'intérieur des dossiers.

voici ma première git status dans mon projet

Rakib-MacBook-Pro:my-xcode-practice rakib$ 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)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   BankAccount (modified content, untracked content)
#   modified:   BuckysButtons (modified content, untracked content)
#   modified:   multiview (modified content, untracked content)
#   modified:   rotator (modified content, untracked content)
#   modified:   segmentedControls (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

puis j'ai mis la commande git add -Un

Rakib-MacBook-Pro:my-xcode-practice rakib$ git add -A

et puis ici, c'est le nouveau statut APRÈS avoir fait la commande git add -Un

Rakib-MacBook-Pro:my-xcode-practice rakib$ 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)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   BankAccount (modified content, untracked content)
#   modified:   BuckysButtons (modified content, untracked content)
#   modified:   multiview (modified content, untracked content)
#   modified:   rotator (modified content, untracked content)
#   modified:   segmentedControls (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

vous pouvez voir qu'il n'y a eu aucun changement dans le dépôt git status. comment puis-je résoudre ce problème?

J'ai aussi essayé d' git add . - il n'a pas aidé

J'ai aussi essayé d' git add * - il n'a pas aidé

48voto

Mark Longair Points 93104

Le problème ici est que, BankAccount, BuckysButtons, multiview, rotator et segmentedControls sont tous les submodules, qui agissent comme des indépendants dépôts dans de nombreuses façons.

Si ce que vous voulez faire est d'exécuter git add -A . dans chaque sous-module, vous pouvez faire:

git submodule foreach --recursive git add -A .

Et puis vous pouvez créer un commit dans chaque sous-module avec:

git submodule foreach --recursive "git commit -m 'Committing in a submodule'"

(Si vous n'avez pas d'autres submodules imbriquée à l'intérieur de ces submodules, l' --recursive option est inutile.)

Cependant, je ne recommande pas de faire cela. Vous devriez soigneusement chaque sous-module, à son tour, et d'envisager comment vous souhaitez les mettre à jour, le traitement de chacun en tant qu'entité indépendante du référentiel. Alors seulement commettre ces nouvelles versions sous-module dans le projet principal lorsque vous avez testé que le projet dans son ensemble fonctionne avec ces nouvelles versions de chaque sous-module.


Mise à jour: Il semble d'après le message d'erreur que vous avez cités dans les commentaires ci-dessous que vous avez ajouté ces autres dépôts git directement plutôt que comme des submodules. Cela peut se produire si vous copiez un autre dépôt git dans votre référentiel puis il suffit d'utiliser git add en scène, plutôt que d'ajouter avec git submodule add <REPOSITORY-URL>. Si vous avez vraiment l'intention de ces sont stockés comme des submodules, je suggère de les déplacer hors de votre dépôt, de commettre leur suppression, puis ajoutez-les correctement comme submodules avec git submodule add

31voto

Patrick Scott Points 1530

J'ai juste recréé ce par accident.

J'ai copié un projet que j'avais dans un autre dossier dans mon nouveau repo git. Je n'ai pas l'intention de l'utiliser comme un sous-module, j'ai l'intention de l'utiliser comme un point de départ pour un nouveau projet. Le projet, j'ai copié qui était maintenant un sous-dossier de mon git de pensions a .git/ en elle. Supprimer subfolder/.git/.

rm -rf subfolder/.git

Puis les choses ont toujours bizarre.. je ne pouvais pas voir tout mes fichiers dans subfolder sur github, mais git m'a dit que je n'avais rien à commettre, pour fixer ce j'ai dupliqué le répertoire, l'a supprimé.

rm -rf subfolder

Ensuite renommé, git add -A, engagés et poussé.

5voto

Steve Points 10623

Un correctif assez simple pour moi - j'avais ouvert le Git Bash dans un sous-répertoire du projet.

Ouvrez le Bash et exécutez les commandes du répertoire racine pour résoudre ce problème. git add -A . travaillé comme prévu.

1voto

insanebits Points 411

J'avais un problème similaire sous Windows où git add --all laissais certains fichiers non suivis. Le problème était qu'il y avait plusieurs fichiers avec des boîtiers différents 'test.php' et 'Test.php', donc git a suivi Test.php et non version minuscule de celui-ci.

Cela pourrait aider quelqu'un à l'avenir et économiser des maux de tête.

0voto

bmargulies Points 49855

Citons la documentation pour -A:

        -A, --all
       Like -u, but match <filepattern> against files in the working tree in addition to the
       index. That means that it will find new files as well as staging modified content and
       removing files that are no longer in the working tree.
 

Notez le mot critique: <filepattern> . Vous devez lui donner un motif qui correspond, de manière récursive, tout au long de votre arbre.

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