Đó là vì Git ghi lại cam kết (không phải là chi nhánh hoặc thẻ, chính xác một cam kết được thể hiện trong hàm băm SHA-1) nên được kiểm tra cho mỗi mô hình con. Nếu bạn thay đổi một cái gì đó trong thư mục con, Git sẽ phát hiện ra nó và thúc giục bạn thực hiện những thay đổi đó trong giới thượng lưu cấp cao nhất.
Chạy git diff
trong kho lưu trữ cấp cao nhất để hiển thị những gì thực sự đã thay đổi Git nghĩ. Nếu bạn đã thực hiện một số cam kết trong mô hình con của mình (do đó "sạch" trong mô hình con), nó sẽ báo cáo thay đổi băm của mô hình con.
$ 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
Mặt khác, nó hiển thị -dirty
thay đổi băm mà bạn không thể tạo giai đoạn hoặc cam kết trong kho lưu trữ cấp cao nhất. git status
cũng tuyên bố mô hình con có nội dung không bị theo dõi / sửa đổi.
$ 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")
Để cập nhật những bản ghi cam kết nào cần được kiểm tra cho mô hình con, bạn cần git commit mô hình con bên cạnh việc thực hiện các thay đổi trong mô hình con:
git add src/repo
wiki
một mô hình con trong thư mục wiki . Tôi không muốn bất kỳ thay đổi nào của tôi từwiki
(tức là thư mục wiki ) phản ánh trong kho lưu trữ chính / mã của tôi. Tôi có nên thêm.gitmodules
đường dẫn trong.gitignore
kho chính của mình không? Làm thế nào tôi nên đi về nó?