これは、サブモジュールごとにコミット(ブランチまたはタグではなく、SHA-1ハッシュで表される正確に1つのコミット)をGitが記録するためです。サブモジュール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ディレクトリに追加しました。メイン(コードリポジトリ)に反映された変更wiki
(ウィキディレクトリなど)を望まない。メインリポジトリの.gitmodules
パスを追加するだけ.gitignore
ですか?どうすればいいですか?