Это потому, что записи Git, которые фиксируют (не ветвь или тег, ровно один коммит, представленный в хэше SHA-1), должны проверяться для каждого подмодуля. Если вы что-то измените в подмодуле dir, Git обнаружит это и попросит вас зафиксировать эти изменения в хранилище верхнего уровня.
Запустите git diff
в репозитории верхнего уровня, чтобы показать, что на самом деле изменилось, думает Git. Если вы уже сделали какие-то коммиты в вашем подмодуле (то есть «очищены» в подмодуле), он сообщит об изменении хеша подмодуля.
$ git diff
diff --git a/src/repo b/src/repo
index b0c86e2..a893d84 160000
--- a/src/repo
+++ b/src/repo
@@ -1 +1 @@
-Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea
+Subproject commit a893d84d323cf411eadf19569d90779610b10280
В противном случае он показывает -dirty
изменение хеша, которое вы не можете поставить или зафиксировать в репозитории верхнего уровня. git status
также утверждает, что субмодуль имеет неотслеживаемый / измененный контент.
$ git diff
diff --git a/src/repo b/src/repo
--- a/src/repo
+++ b/src/repo
@@ -1 +1 @@
-Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea
+Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea-dirty
$ git status
On branch master
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: src/repo (untracked content)
no changes added to commit (use "git add" and/or "git commit -a")
Чтобы обновить, какие записи фиксации должны быть извлечены для подмодуля, вам необходимо выполнить git commit подмодуль в дополнение к фиксации изменений в подмодуле:
git add src/repo
wiki
как подмодуль в директорию вики . Я не хочу, чтобы какие-либо изменения изwiki
(то есть из вики- каталога) отражались в моем репозитории main / code. Должен ли я просто добавить.gitmodules
путь в моем.gitignore
основном хранилище? Как я должен идти об этом?