web-dev-qa-db-fra.com

ne peut pas ajouter de dossier dans git

J'ajoute un nouveau dossier (en fait je l'ai cloné à partir d'un autre dépôt et j'ai oublié cela), puis j'ai apporté quelques modifications. De plus, j’ai fait beaucoup de changements ailleurs, quand j’ai essayé de faire git add

# 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:   protected/ext/SpecificFolder (modified content)
#

Ensuite, je me souviens qu’il y avait peut-être un dossier .git (parce que j’y avais auparavant git clone). Je suis allé dans ce dossier et supprimer les fichiers non nécessaires (dossiers) et le dossier .git aussi. J'ai vérifié le statut de git, rien d'étrange. Ensuite, validez et passez à une autre branche et tout à coup, je réalise que ce dossier n’a pas été ajouté à la dernière validation. En fait, le dossier a été ajouté mais les fichiers à l'intérieur ont été ignorés. Maintenant, même lorsque j'essaie de faire git add pour ce dossier, rien ne se passe et git status ne montre aucun changement :(

Que puis-je faire ?

19
user1016265

Git ne suit pas les répertoires; mais juste les fichiers qu’ils contiennent.

Il semble que vous ayez un motif d’ignorer qui empêche add de ne rien faire. Vous pouvez voir les fichiers ignorés avec git status --ignored; ils peuvent ensuite être suivis avec git add --force protected/ext/SpecificFolder

26
Bryan

Git ne suit pas les répertoires VIDE. Si vous avez un projet avec plusieurs couches de sous-répertoires, git effectue le suivi des répertoires avec leurs fichiers. Si ce n'était pas le cas, il s'agirait d'un référentiel de fichiers plat.

7
allmusic76

Il m'est arrivé de faire exactement ce que cet utilisateur a fait: Ajouter un référentiel git existant dans un autre.

Le symptôme était que git reconnaissait ce répertoire en tant que fichier et n'était donc pas en mesure d'ajouter les fichiers du répertoire.

Pour résoudre cette question, j'ai supprimé le dossier .git du dossier, déplacé ce dossier dans un autre répertoire, effacé l'index, supprimé le répertoire situé dans mon référentiel, puis j'ai pu l'ajouter correctement.

La morale de ceci est la suivante: n’ajoutez pas de référentiel dans un autre.

3
madmin

Il y a une meilleure réponse ici: . Gitkeep usage

TL; DR, ajoutez un fichier .gitkeep à votre répertoire vide

2
Yarh

Essayez d'ajouter un fichier dans ce répertoire.

$ git add my-dir/index.html

Si vous voyez une sortie comme celle ci-dessous:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

Il y a une règle dans l'un de vos gitignores qui vous empêche d'ajouter ce répertoire.

0
Gayan Weerakutti

J'ai trouvé des effets secondaires similaires après avoir essayé de convertir ce qui était auparavant un sous-module en un sous-dossier normal.

L'ajout du dossier que j'essayais de convertir semblait fonctionner, mais il s'avère que les fichiers qu'il contient n'ont pas été réellement ajoutés.

Essayer d'ajouter spécifiquement un fichier à l'intérieur m'a donné un meilleur avertissement

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • c'était donc lié à la façon dont j'avais manuellement essayé de supprimer l'ancien sous-module, car il n'existait aucun processus bien documenté pour le faire correctement. - Je venais de le supprimer de .gitmodules. D'autres éléments étaient réellement nécessaires pour éradiquer les ombres du sous-module.
0
dman