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

Je souhaite append tous les fichiers, peu importe ce qu’ils sont: qu’ils soient supprimés, créés, modifiés, non suivis, etc. Je ne veux tout simplement pas append TOUS mes fichiers CHAQUE FOIS . J’ai essayé git add -A mais il git add -A PAS de fichiers modifiés à l’intérieur des dossiers.

Voici mon git status initial dans mon projet:

 Rakib-MacBook-Pro:my-xcode-practice rakib$ git status # On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." 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 je mets git add -A :

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

et puis voici le nouveau statut APRÈS avoir git add -A :

 Rakib-MacBook-Pro:my-xcode-practice rakib$ git status # On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." 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 pas eu de changement dans le git status . Comment puis-je résoudre ce problème?

J’ai aussi essayé git add . – ça n’a pas aidé

J’ai aussi essayé git add * – ça n’a pas aidé

Le problème ici est que BankAccount , BuckysButtons , multiview , BuckysButtons et segmentedControls sont tous des sous-modules git, qui agissent comme des référentiels indépendants à bien des égards.

Si vous voulez faire 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 sous-modules nesteds dans ces sous-modules, l’option --recursive est inutile.)

Cependant , je ne recommande pas de le faire. Vous devez soigneusement changer chaque sous-module à tour de rôle et examiner comment vous souhaitez les mettre à jour, en les traitant chacun comme un référentiel autonome. Ensuite, ne validez ces nouvelles versions de sous-modules dans le projet principal que lorsque vous avez testé que le projet dans son ensemble fonctionne avec ces nouvelles versions de chaque sous-module.


Mise à jour: Il ressort du message d’erreur que vous avez cité dans les commentaires ci-dessous que vous avez ajouté ces autres référentiels git directement plutôt que sous-modules. Cela peut arriver si vous copiez un autre repository git dans votre référentiel, puis utilisez simplement git add pour le mettre en scène, plutôt que de l’append avec le git submodule add . Si vous avez vraiment l’intention de les stocker en tant que sous-modules, je vous suggère de les retirer de votre référentiel, en les validant, puis de les append correctement en tant que sous-modules avec l’ git submodule add

Je viens de recréer ceci par accident.

J’ai copié un projet que j’avais dans un autre dossier dans mon nouveau repository git. Je n’avais pas l’intention de l’utiliser comme sous-module, j’avais l’intention de l’utiliser comme sharepoint départ pour un nouveau projet. Le projet que je copiais, qui était maintenant un sous-dossier de mon principal .git/ git, .git/ . Supprimer le subfolder/.git/ .

 rm -rf subfolder/.git 

Alors les choses étaient encore étranges …

 git status 

Rien à s’engager Hmm … Qu’en est-il de tous ces fichiers?

Je ne savais pas vraiment comment résoudre ce problème correctement avec git. J’ai donc dupliqué le répertoire et supprimé l’original.

 cp subfolder newsubfolder rm -rf subfolder 

Puis j’ai ajouté tous les fichiers modifiés, validés et poussés.

 git add -A git commit -am 'i did something and there are now files' git push origin  

J’ai résolu ce problème en supprimant les dossiers .git à l’intérieur des sous-modules supposés et à l’intérieur de la racine du projet, puis en effectuant un nouveau «git init».

Une solution simple pour moi: j’avais ouvert le Git Bash dans un sous-répertoire du projet.

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

Cette erreur se produit car vous avez ajouté un dossier déjà lié à un autre référentiel github. Le dossier parent avec lequel vous travaillez est lié à un autre référentiel. Pour résoudre ce problème, copiez d’abord les fichiers que vous souhaitez télécharger dans github à partir du dossier BankAccount, puis supprimez le dossier BankAccount. Créez maintenant un nouveau dossier, puis collez-y les fichiers. Cela est dû aux sous-modules git qui sont automatiquement pris par git dans le dossier précédent. Maintenant tu peux faire

 git add . git status 

Citons la documentation pour -A:

  -A, --all Like -u, but match  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: . Vous devez lui donner un motif qui correspond, récursivement, tout au long de votre arbre.

J’ai eu un problème similaire sur Windows où j’ai git add --all laissé des fichiers non suivis, le problème était qu’il y avait plusieurs fichiers avec des casages différents ‘test.php’ et ‘Test.php’ donc git suivi Test.php et non version minuscule de celui-ci.

Cela peut aider quelqu’un à l’avenir et sauver quelques égratignures.

J’ai eu ce problème au cours des deux derniers jours avec BitBucket. Je travaille sur un projet qui est suivi dans son référentiel par Visual Studio 2013 Community Edition.

Cependant, j’avais utilisé Git Bash à l’occasion pour faire manuellement des commits et c’est à ce moment que les choses ont commencé à mal tourner et que les fichiers étaient simplement ignorés. J’ai essayé de reclone le repo mais cela n’a pas aidé.

Finalement, j’ai trouvé que si vous alliez dans Visual Studio> Team Explorer> cliquez sur Sync, Visual Studio effectuera un tirage, puis validera et poussera tous les fichiers non suivis.

Vous pouvez faire la même chose manuellement avec Git Bash si vous aimez la console comme moi.

J’espère que cela aide quelqu’un.

J’ai eu ce problème parce que j’ai cloné le repository de quelqu’un d’autre dans mon projet. Lorsque je l’ai cloné, il y avait déjà des dossiers / fichiers .git et .gitignore de leur projet. Après avoir supprimé ces fichiers git préexistants et recommencé avec git, cela fonctionne bien.