2010-06-01 30 views
65

Tôi đã sử dụng SVN cho tất cả các dự án của mình. Đôi khi dự án B có nguồn gốc như một bản sao từ dự án A. Khi dự án A có thay đổi chung, tôi có thể sử dụng svn merge A trong thư mục B và nó sẽ hợp nhất những thay đổi đó.git hợp nhất các kho lưu trữ khác nhau?

Bây giờ, nếu tôi muốn sử dụng git. Tôi không thích có tất cả các dự án của tôi trong cùng một kho lưu trữ kể từ khi tôi phải sao chép mọi thứ và không thể chọn chỉ một dự án như trong SVN. Nhưng có một kho lưu trữ cho mỗi dự án, làm cách nào để tôi thực hiện giống như tôi đã làm trước đó với SVN?

Câu hỏi đặt ra là: cách tốt nhất để cấu trúc nó nếu tôi muốn nhiều tiểu dự án đó thực sự tất cả liên quan đến một dự án ban đầu và giữ chúng trong đồng bộ là gì? Và tôi cũng muốn để có thể kiểm tra xem chúng ra riêng

+1

Có lẽ bạn nên xem git-submodule (http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html). – Cascabel

+0

@Jefromi nhưng các tệp nguồn cơ bản từ cùng một lịch sử, điều này có nghĩa là tôi có hai bản sao của các tệp? Tôi nghĩ rằng submodule là nhiều hơn cho việc theo dõi các thư viện bên ngoài mà bạn bao gồm các tập tin riêng biệt (không hợp nhất)? – baloo

+0

Đừng bận tâm, tôi không thấy bạn nói B là bản sao A. Đọc "câu hỏi là", nơi bạn nói "tiểu dự án ... liên quan đến một dự án gốc ... đồng bộ" Tôi cho rằng ý bạn là lấy ra các phần của dự án gốc đó, nhưng giữ chúng trong đồng bộ trong metaproject. – Cascabel

Trả lời

113

Nếu bạn có hai dự án, proj1proj2 và muốn kết hợp những thay đổi của proj1 vào proj2, bạn sẽ làm điều đó như thế này:

# in proj2: 
git remote add proj1 path/to/proj1 
git fetch proj1 
git merge proj1/master # or whichever branch you want to merge 

Tôi tin rằng điều này cũng giống như những gì bạn đang làm với SVN.

+0

Nhưng sẽ hợp nhất thay đổi # 2 theo dõi mà chúng tôi đã sáp nhập thay đổi # 1 làm theo cách này? Tôi đã phải hợp nhất tất cả các thay đổi (và sửa các xung đột) cho tất cả các thay đổi mỗi lần thay đổi mới được thêm vào nếu tôi nhớ chính xác. Điều này đã không xảy ra SVN-way – baloo

+0

Tất nhiên, hợp nhất hoạt động như bình thường. Bạn không phải "remerge all changes". Điều này là không có gì nhiều hơn so với việc hợp nhất thông thường, cái mà bạn sẽ sử dụng với một máy chủ ở xa. –

+0

Nếu tôi không có điều khiển từ xa thì sao? Tôi muốn làm như vậy (hợp nhất projA thành projB) nhưng tôi chỉ làm việc cục bộ mà không cần điều khiển từ xa. –

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