Submodule
Submodule
Cần nhúng một thư viện dùng chung vào dự án mà vẫn giữ lịch sử riêng của nó? Submodule cho phép một repo lồng trong một repo.
1. Submodule là gì?
Submodule nhúng một repo Git khác vào thư mục con của repo hiện tại. Repo cha không chứa code của submodule mà chỉ ghi nhớ submodule đang trỏ tới đúng một commit cụ thể, qua file .gitmodules.
git submodule add https://github.com/org/shared-lib libs/shared
# Sau khi clone repo cha, kéo nội dung submodule về:
git submodule update --init --recursive
2. Khi nào dùng?
| Tình huống | Lựa chọn |
|---|---|
| Ghim repo dùng chung ở phiên bản cố định | Submodule phù hợp |
| Phụ thuộc thông thường | Dùng package manager (npm, pip...) |
| Nhiều dự án liên quan chặt | Cân nhắc monorepo |
3. Bẫy thường gặp
Sau khi clone repo có submodule, nếu quên git submodule update --init thì thư mục submodule rỗng và build hỏng. Cập nhật lên commit mới của submodule bằng git submodule update --remote.
Cách nhớ nhanh
Submodule = repo trong repo, cha ghim đúng một commit. Nhớ --init sau khi clone, nếu không thư mục rỗng. Phụ thuộc thường thì nên dùng package manager thay vì submodule.