Git 2.23 (Q3 2019): nếu bạn muốn sao chép và cập nhật các mô hình con lên phiên bản mới nhất của chúng:
git clone --recurse-submodules --remote-submodules
Nếu bạn chỉ muốn sao chép chúng tại SHA1 được ghi lại của chúng:
git clone --recurse-submodules
Xem bên dưới.
Câu trả lời gốc 2010
Như joschi đề cập trong các bình luận, git submodule
giờ đây hỗ trợ --recursive
tùy chọn (Git1.6.5 trở lên).
Nếu --recursive
được chỉ định, lệnh này sẽ lặp lại vào các mô hình con đã đăng ký và cập nhật bất kỳ mô hình con lồng nhau nào bên trong.
Xem Làm việc với các mô đun con git đệ quy cho phần init.
Xem git submodule
giải thích để biết thêm.
Với phiên bản 1.6.5 của git trở lên, bạn có thể thực hiện việc này một cách tự động bằng cách nhân bản siêu dự án với –-recursive
tùy chọn:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Cập nhật 2016, với git 2.8: xem " Cách tăng tốc / song song tải xuống các mô hình con git bằng cách sử dụng git clone --recursive
? "
Bạn có thể bắt đầu tìm nạp mô hình con bằng cách sử dụng nhiều luồng, song song.
Ví dụ:
git fetch --recurse-submodules -j2
Thậm chí tốt hơn, với Git 2.23 (quý 3 năm 2019), bạn có thể sao chép và kiểm tra mô hình con đến nhánh theo dõi của chúng trong một lệnh!
Xem cam kết 4c69101 (ngày 19 tháng 5 năm 2019) của Ben Avison ( bavison
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 9476094 , ngày 17 tháng 6 năm 2019)
clone
: thêm --remote-submodules
cờ
Khi sử dụng git clone --recurse-submodules
trước đây không có cách nào chuyển một --remote
công tắc sang git submodule update
lệnh ngầm cho bất kỳ trường hợp sử dụng nào mà bạn muốn các mô hình con được kiểm tra trên nhánh theo dõi từ xa của chúng thay vì SHA-1 được ghi trong siêu dự án.
Bản vá này khắc phục tình trạng này.
Nó thực sự được chuyển --no-fetch
đến git submodule update
với lý do chúng là mô hình con chỉ mới được nhân bản, do đó, việc tìm nạp từ xa chỉ phục vụ để làm chậm mọi thứ.
Điều đó có nghĩa là:
--[no-]remote-submodules:
Tất cả các mô hình con được nhân bản sẽ sử dụng trạng thái của nhánh theo dõi từ xa của mô hình con để cập nhật mô hình con, thay vì SHA-1 được ghi lại của siêu dự án. Tương đương với đi --remote
tới git submodule update
.
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23): nó sẽ sao chép và cập nhật các mô hình con trong một lệnh. Xem câu trả lời chỉnh sửa của tôi dưới đây .