Chúng ra có 1 repository A và bên trong chứa 2 folder bé là: a và v
├── repository-A
│ ├── folder-a
│ └── folder-b
Ngày thứ nhất tôi change code trong folder-a folder. Sau khi feature của app a completed. tôi thực hiện tạo PR vào master.
Ngày thứ hai tôi change code trong folder-b folder. Sau khi feature của app b completed. tôi thực hiện tạo PR vào master.
Sau đó tôi thực hiện tạo tag b-1.0.1 và tôi mong muốn tag b-1.0.1 chỉ chứa code của folder b và không chưa bất kì code nào khác ngoài folder b
Chúng ta sẽ tìm hiểu git submodule là gì?
Git submodule thường được sử dụng để quản lý các thư viện, dự án, hoặc thành phần phụ thuộc (dependencies) mà cần được phát triển và duy trì tách biệt với mã nguồn chính nhưng vẫn cần được liên kết với nó.
https://www.youtube.com/watch?v=gSlXo2iLBro
Như trong clip chúng ta có 2 repo git-submodule-tutorial và repo là youtube-tutorials
git-submodule-tutorial sẽ cần sử dụng 1 số code của youtube-tutorials. Thay vì bạn phải clone code của youtube-tutorials sau đó push lên repo git-submodule-tutorial thì bạn sẽ tạo 1 sub module dẫn đến youtube-tutorials và lưu nó trong git-submodule-tutorial là ok.
Bạn có thể quan sát ảnh bên dưới này là bạn hiểu ngay
Và tại sao chúng ta sử dụng Sub-module?
là khi chúng ta sử dụng Sharing Libraries.
git submodule add <repo-URL>
Bạn sẽ thấy là file .gitmodules
trong file bạn sẽ thấy path và url của git sub-module đang refer to
Bạn thấy là khi bạn không chỉ định rõ rằng thì nó sẽ là link đến commit hash mới nhất của default branch là master.
git pull --recurse-submodules
Chi tiết hoạt động:
git pull
: Lấy về các thay đổi mới từ remote và tích hợp vào branch hiện tại.--recurse-submodules
: Cập nhật tất cả các submodule bên trong repository chính để đồng bộ với commit hiện tại của repository chính.
git config submodule.recurse true
Explanation:
git config
: This command is used to set Git configuration options.submodule.recurse true
: By setting this option totrue
, it instructs Git to automatically apply the--recurse-submodules
option by default. This means that you won’t need to specify--recurse-submodules
manually every time you run commands that interact with submodules, such asgit pull
,git checkout
, and so on.
Tiếp theo chỉ đơn giản là bạn git clone repo.
thì khi kiểm tra folder sub module bạn cũng sẽ không thấy gì?
Bước tiếp theo là bạn sẽ run command:
git submodule update --init
Bạn sẽ thấy là folder submodule đã được cập nhật.