Non, vous n'avez pas besoin d'ajouter votre sous-module à votre .gitignore
: ce que le parent verra de votre sous-module est un gitlink (une entrée spéciale,mode 160000
).
Cela signifie: toute modification effectuée directement dans un sous-module doit être suivie d'un commit dans le répertoire parent.
De cette façon, le répertoire parent enregistrera le bon commit pour l'état du sous-module: Ce commit est le "gitlink" mentionné ci-dessus;
Vous pouvez en savoir plus sur cette politique dans " git submodule update (vraie nature des sous-modules) ".
L'idée principale des sous-modules est une approche basée sur les composants , dans laquelle vous référencez d'autres dépôts à des commits spécifiques. Mais si vous modifiez quelque chose dans ces sous-modules, vous devez également mettre à jour ces références dans le référentiel parent.
Notez qu'avec Git 2.13 (Q2 2017), sans ignorer le gitlink, vous pouvez toujours ignorer le sous-module avec:
git config submodule.<name>.active false
Pour en savoir plus, consultez " Ignorer les nouveaux commits pour le sous-module git ".
Remarque: avec Git 2.15.x / 2.16 (Q1 2018), ignorer un sous-module est plus précis.
" git status --ignored --untracked
" ne s'est pas arrêté à une arborescence de travail d'un projet séparé qui est incorporé dans un répertoire ignoré et des fichiers répertoriés dans cet autre projet, au lieu de simplement afficher le répertoire lui-même comme ignoré.
Voir commit fadb482 (25 octobre 2017) par Johannes Schindelin ( dscho
) .
(Fusionné par Junio C Hamano - gitster
- dans commit da7996a , 06 novembre 2017)
status
: ne vous laissez pas confondre par les sous-modules dans les répertoires exclus
Nous transmettons méticuleusement le exclude
drapeau à la treat_directory()
fonction afin de pouvoir indiquer que les fichiers qu'elle contient sont exclus plutôt que non suivis lors de la récurrence.
Mais nous n'avons pas encore traité les sous-modules de la même manière.
Pour cette raison, git status --ignored --untracked
avec un sous-module
submodule
dans un gitignored tracked/
afficherait le sous-module dans la Untracked files
section " ", par exemple
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
tracked/submodule/
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/initial.t
Au lieu de cela, nous voudrions qu'il affiche le sous-module dans la Ignored files
section " ":
On branch master
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/