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 ?
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
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.
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.
Il y a une meilleure réponse ici: . Gitkeep usage
TL; DR, ajoutez un fichier .gitkeep
à votre répertoire vide
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.
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'