Nie, nie musisz dodawać swojego podmodułu do swojego .gitignore: to, co rodzic zobaczy z Twojego modułu podrzędnego, to gitlink ( specjalny wpismode 160000 ).
To znaczy: każda zmiana dokonana bezpośrednio w module podrzędnym musi zakończyć się zatwierdzeniem w katalogu nadrzędnym.
W ten sposób katalog nadrzędny zapisze poprawne zatwierdzenie stanu podmodułu: tym zatwierdzeniem jest wspomniany powyżej „gitlink”;
Możesz przeczytać więcej o tej polityce w „ Git submodule update (true nature of submodules) ”.
Główną ideą podmodułów jest podejście oparte na komponentach , w którym odwołujesz się do innych repozytoriów przy określonych zatwierdzeniach. Ale jeśli zmienisz cokolwiek w tych podmodułach, musisz zaktualizować te odwołania również w repozytorium nadrzędnym.
Zauważ, że z Git 2.13 (Q2 2017), nie ignorując gitlink, nadal możesz zignorować podmoduł za pomocą:
git config submodule.<name>.active false
Zobacz więcej w „ Ignoruj nowe zatwierdzenia dla modułu podrzędnego git ”.
Uwaga: w przypadku Git 2.15.x / 2.16 (Q1 2018) ignorowanie modułu podrzędnego jest bardziej precyzyjne.
„ git status --ignored --untracked” nie zatrzymał się na drzewie roboczym oddzielnego projektu, który jest osadzony w ignorowanym katalogu i zawiera listę plików w tym innym projekcie, zamiast po prostu pokazywać sam katalog jako zignorowany.
Zobacz commit fadb482 (25 października 2017) autorstwa Johannesa Schindelina ( dscho) .
(Scalone przez Junio C Hamano - gitster- w zatwierdzeniu da7996a , 6 listopada 2017 r.)
status: nie daj się zmylić podmodułami w wykluczonych katalogach
Skrupulatnie przekazujemy excludeflagę do treat_directory()funkcji, abyśmy mogli wskazać, że pliki w niej zawarte są wykluczane, a nie nieśledzone podczas rekurencji.
Ale jeszcze nie traktowaliśmy podmodułów w ten sam sposób.
Z tego powodu, git status --ignored --untrackedjeśli podmoduł
submodulew gitignored tracked/pokaże moduł podrzędny w sekcji „ Untracked files”, np.
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
Zamiast tego chcielibyśmy, aby pokazywał moduł podrzędny w sekcji „ Ignored files”:
On branch master
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/