2013-05-17 20 views
6

Giả sử hai kho git với một số tác phẩm trong đó:Tôi có thể thực hiện hợp nhất subtree từ thư mục con không?

ProjectA 
+ a 
+ b 

ProjectB 
+ foo/x 
+ foo/y 
+ bar/z 

Bây giờ tôi muốn bao gồm các thư mục foo từ ProjectB vào PROJECTA.

Theo như tôi hiểu khi tôi làm git subtree add các prefix là con đường mà nó nên có trong kho tiếp nhận, vì vậy khi tôi làm

git subtree add --prefix=project_b --squash URL_of_ProjectB 

tôi sẽ kết thúc với

ProjectA 
+ a 
+ b 
+ project_b 
    + foo/x 
    + foo/y 
    + bar/z 

Tôi có thể bằng cách nào đó specifiy rằng tôi chỉ muốn foo lấy để có được bố trí này?

ProjectA 
+ a 
+ b 
+ project_b 
    + x 
    + y 

Trả lời

5

Tôi nghĩ rằng điều này không thể thực hiện được với git subtree. Có lẽ git filter-branch là những gì bạn cần:

git remote add b <URL_TO_B> 
git fetch b 
git checkout -b b_master b/master 

Viết lại lịch sử của b chỉ chứa foo:

git filter-branch --prune-empty --subdirectory-filter foo b_master 

hoặc sử dụng git subtree split

git subtree split -P foo --branch foo 

và thêm nó như là cây con

git subtree add --prefix=project_b --squash b_master or foo 
+0

Điều này có thay đổi quá trình sáp nhập trong các thay đổi tiếp theo trong ProjectB vào ProjectA không? Tôi nghĩ kịch bản của tôi là chính xác những gì 'git subtree' là cho, nhưng nếu nó không, những gì * có thể * được thực hiện với nó? Có lẽ tôi có thể thay đổi bố cục tệp của mình để phù hợp hơn. – AndreKR

+0

Có, bạn phải làm lại bước bộ lọc mỗi lần bạn muốn hợp nhất các thay đổi từ ProjectB vào ProjectA. Trang man 'git subtree' giải thích lệnh' git split' tương tự như lệnh 'filter-branch' mà tôi đã cung cấp. Nhưng nếu bạn có thể thay đổi bố trí của bạn có lẽ nó tốt hơn để trích xuất các conntent của 'foo' vào một kho riêng biệt và thêm nó như là một subtree cho cả hai dự án. Có lẽ điều này là tốt hơn vì 'b' là một số loại lib? – gregor

+0

Đó là vấn đề, nó không thực sự. Nếu có, tôi sẽ biến nó thành một mô-đun con. Đó là một số mã được chia sẻ giữa hai dự án ... một danh sách các quốc gia, một số mẫu, v.v. – AndreKR

Các vấn đề liên quan