Câu trả lời:
Có vẻ như bạn muốn sử dụng mô-đun con Git .
Git giải quyết vấn đề này bằng cách sử dụng mô-đun con. Các mô-đun con cho phép bạn giữ một kho lưu trữ Git như một thư mục con của một kho lưu trữ Git khác. Điều này cho phép bạn sao chép một kho lưu trữ khác vào dự án của mình và giữ các cam kết của bạn riêng biệt.
Tôi đã luôn sử dụng các liên kết tượng trưng để duy trì hai đại diện riêng biệt và riêng biệt.
.gitignore
?
rsync -avh --delete --exclude='.git' REPO-B/ REPO-A/REPO-B-copy/
sau khi có bất kỳ thay đổi nào đối với REPO-B
Có, bạn có thể làm chính xác những gì bạn đang yêu cầu với cấu trúc phân cấp tệp bạn đã vẽ. Repo-B sẽ độc lập và không có kiến thức về Repo-A. Repo-A sẽ theo dõi tất cả các thay đổi trong các tệp của chính nó và các tệp của Repo-B.
Tuy nhiên, tôi không khuyên bạn nên làm điều này. Mỗi khi bạn thay đổi tệp và cam kết trong Repo-B, bạn sẽ phải cam kết trong Repo-A. Việc phân nhánh trong Repo-B sẽ gây rối với Repo-A và việc phân nhánh trong Repo-A sẽ rất khó khăn (sự cố khi xóa các thư mục, v.v.). Mô-đun con chắc chắn là con đường để đi.
Bạn có thể đạt được những gì bạn muốn (repo REPO-A đó chứa tất cả các tệp, bao gồm cả những tệp trong thư mục REPO-B thay vì chỉ tham chiếu) bằng cách sử dụng "git-subrepo":
https://github.com/ingydotnet/git-subrepo
Nó vẫn hoạt động nếu một số cộng tác viên của bạn không cài đặt lệnh subrepo; họ sẽ thấy cấu trúc thư mục hoàn chỉnh nhưng sẽ không thể thực hiện các thay đổi đối với các bản kê khai con.