Itu karena catatan Git yang melakukan (bukan cabang atau tag, tepat satu komit diwakili dalam hash SHA-1) harus diperiksa untuk setiap submodule. Jika Anda mengubah sesuatu dalam direktori submodule, Git akan mendeteksinya dan mendesak Anda untuk melakukan perubahan tersebut di repoisitory level atas.
Jalankan git diff
di repositori tingkat atas untuk menunjukkan apa yang sebenarnya berubah menurut Git. Jika Anda sudah membuat beberapa komitmen dalam submodule Anda (dengan demikian "bersih" dalam submodule), itu melaporkan perubahan hash submodule.
$ 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
Kalau tidak, ini menunjukkan -dirty
perubahan hash yang Anda tidak bisa panggung atau komit di repositori tingkat atas. git status
juga mengklaim submodule memiliki konten yang tidak terlacak / dimodifikasi.
$ 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")
Untuk memperbarui catatan komit mana yang harus diperiksa untuk submodule, Anda perlu mendapatkan komit submodule sebagai tambahan untuk melakukan perubahan pada submodule:
git add src/repo
wiki
sebagai submodule di direktori wiki . Saya tidak ingin ada perubahan saya dariwiki
(yaitu direktori wiki ) untuk tercermin dalam repositori utama / kode saya. Haruskah saya menambahkan.gitmodules
path di.gitignore
repositori utama saya? Bagaimana saya harus melakukannya?