Git đang thực hiện chính xác những gì nó phải làm. git submodule update
sẽ đặt mô-đun con của bạn thành những gì mà commit hiện tại trong repo chính xác định submodule sẽ ở. Bằng cách này, bạn có thể kiểm tra chi nhánh khác, cam kết cũ hơn hoặc thẻ, sau đó chạy git submodule update
và mô-đun con sẽ được đặt thành tham chiếu mong đợi để toàn bộ giải pháp của bạn sẽ có phụ thuộc thỏa mãn.
Những gì bạn cần làm là:
cd mysubmoduledir
git fetch
git checkout master # or any other branch that you need the latest of
git merge origin/master
cd - # go back to the top repo
git status # should show that your submodule changed
git add mysubmoduledir
git commit -m "Updated my solution to use latest sub project."
một phiên bản ngắn hơn là:
cd mysubmoduledir
git pull # assumes you are already on the branch you need to be on
cd -
git commit -am "Updated submodule" # assumes you had no other modified files
Từ "cập nhật" không phải là điều tốt nhất cho lệnh submodule này. Nó thực sự có nghĩa là "trỏ submodule đến commit mà commit của cha mẹ repo mong đợi".
Cập nhật mô-đun con thành một cam kết khác (không phải là mới nhất) yêu cầu bạn nhập cd vào thư mục đó, thao tác nó như một repo git thông thường để cam kết hiện tại là những gì bạn muốn, sau đó quay trở lại và cam kết thay đổi này trên repo cấp cao nhất.
Nguồn
2012-12-12 17:49:17
Thật là một tên vô lý đối với một lệnh ?! Nó rõ ràng nên được git submodule etadpu –
Suy nghĩ về điều này "git submodule ilikepancakes" có lẽ sẽ làm cho ý nghĩa nhiều. Và nếu bất kỳ ai không đồng ý, vui lòng đọc bản trình bày khôn ngoan về thiết kế không gian hạt nhân apis: http://man7.org/conf/lca2013/Why_kernel_space_sucks-2013-02-01-printable.pdf –
Thông tin chi tiết về cách sử dụng mô-đun con git ': https://chrisjean.com/git-submodules-adding-using-removing-and-updating/ –