Là tập hợp con của câu hỏi detach-subdirectory đã được thực hiện trước đó và xem xét thực tế là mặc dù đã có rất nhiều câu hỏi về quá trình tách và hợp nhất kho lưu trữ git, tôi không thể tìm thấy một trong đó chạm vào chủ đề tách khi submodules có mặt.Tách thư mục phụ với các mô-đun con thành một kho lưu trữ git riêng lẻ
Vì vậy, trong các tình huống sau:
.git/
.gitmodules
folder/
data/
content/
other_data/
submoduleA/
submoduleB/
Tôi muốn để có được hai kho với cơ cấu như sau:
.git/
data/
và
.git/
.gitmodules
content/
other_data/
submoduleA/
submoduleB/
Các trường hợp đầu tiên không phải là một vấn đề và có thể được giải quyết dễ dàng với phương pháp được mô tả trong detach-subdirectory.
Thứ hai không quá nhiều. Sự tồn tại của môđun con và thực tế là các phân tử .gitmodules chứa đường dẫn đầy đủ cho folder/content/submoduleA
và folder/content/submoduleB
làm cho một phần của lịch sử không nhất quán vì .gitmodules đề cập đến cấu trúc thư mục không tồn tại (khi bộ lọc nhánh được sử dụng).
Vì vậy, tôi muốn biết liệu có cách nào để thực hiện việc này mà không gây ra lịch sử không nhất quán hay không.
Sử dụng một lệnh git filter-branch thứ hai tôi đã có thể viết lại .gitmodules với một lệnh sed, tuy nhiên thực tế các thư mục submodule vẫn còn bị ảnh hưởng (cả với bộ lọc chỉ mục và bộ lọc cây). Chỉ bộ lọc thư mục con mới có thể thay đổi chúng nhưng sau đó .gitmodules bị xóa. Lệnh git submodule split dường như làm chính xác những gì tôi định, nhưng đọc thread tôi có ấn tượng rằng nó có một số vấn đề nên tôi không cảm thấy thoải mái khi sử dụng nó. – Unode
@Unode: Tôi hiểu. Tôi không nghĩ rằng bản vá đặc biệt này đang được phát triển tích cực ngay bây giờ. – VonC