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 fait quelques changements là-bas. De plus, j'ai fait beaucoup de changements dans d'autres endroits, 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 précédemment j'avais git clone là-bas). Je suis allé dans ce dossier et j'ai également supprimé les fichiers inutiles (dossiers) et le dossier .git. J'ai vérifié le statut de git, rien d'étrange. Ensuite, validez et passez à une autre branche et tout à coup, je constate que ce dossier n'a pas été ajouté au dernier commit. 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
référentiel et que des fichiers étaient ajoutés à ce référentiel au lieu du référentiel dans le dossier principal. Même dans l'interface graphique de Git, ce sous-dossier est apparu sous forme de fichier plutôt que sous forme de dossier.Réponses:
Git ne suit pas les répertoires; mais juste les fichiers qu'ils contiennent.
Il semble que vous ayez un motif d'ignorance qui
add
ne fait rien. Vous pouvez voir les fichiers ignorés avecgit status --ignored
; ils peuvent ensuite être suivis avecgit add --force protected/ext/SpecificFolder
la source
git status --ignored
, je pense qu'il est lié au sousGit ne suit pas les répertoires VIDE. Si vous avez un projet avec plusieurs couches de sous-répertoires, git suit en fait les répertoires avec leurs fichiers. Si ce n'était pas le cas, ce serait un seul référentiel plat de fichiers.
la source
Il m'est arrivé de faire exactement ce que cet utilisateur a fait: ajouter un référentiel git existant à l'intérieur d'un autre.
Le symptôme était que git a reconnu ce répertoire en tant que fichier et n'a donc pas pu ajouter les fichiers du répertoire.
Pour résoudre cette question, j'ai supprimé le
.git
dossier dans le dossier, déplacé ce dossier dans un autre répertoire, effacé l'index, supprimé le répertoire où dans mon référentiel, puis j'ai pu ajouter le répertoire correctement.La morale de ceci est: n'ajoutez pas de référentiel à l'intérieur d'un autre.
la source
git rm --cached path_to_submodule
Il y a une meilleure réponse ici: l' utilisation de .gitkeep
TL; DR, ajoutez un
.gitkeep
fichier à votre répertoire videla source
Essayez d'ajouter un fichier dans ce répertoire.
Si vous voyez une sortie comme celle-ci:
Il y a une règle dans l'un de vos gitignores qui vous empêche d'ajouter ce répertoire.
la source
J'ai trouvé des effets secondaires similaires après avoir essayé de convertir ce qui était 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 contenait n'ont pas été réellement ajoutés.
Essayer d'ajouter spécifiquement un fichier à l'intérieur m'a donné un meilleur avertissement
la source