Bạn có thể fetch one into another:
$ cd project1
$ git config remote.project2.url /path/to/project2
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*'
$ git fetch project
Điều đó sẽ cung cấp cho bạn hai (hoặc nhiều hơn) chi nhánh, chứa lịch sử của project1 và project2. Họ vẫn hoàn toàn độc lập, chỉ cần sử dụng cùng một cửa hàng đối tượng.
Sau đó (không kiểm tra), bạn có thể sử dụng một tập tin ghép (.git/info/grafts
), nơi bạn có thể ghi đè lên làm cha mẹ của một cam kết (như là người đầu tiên của project2 có cho cha mẹ mới nhất của project1)
Như Dustin nói trong các ý kiến, một rebase là theo thứ tự để "làm cho nó vĩnh viễn", bằng cách phát lại project2 cam kết vào project1.
Bạn có một minh họa khác trong mục nhập blog "Using Git within a project (forking around)" này, đặc biệt là phần "Cách lôi kéo bạn bè và ảnh hưởng đến mọi người". Một lần nữa:
git checkout two_point_ooh
git remote add strelau git://gitorious.org/ruby-on-rails-tmbundle/mainline.git
git checkout -b strelau/two_point_ooh
git pull strelau two_point_ooh
là một quá trình tương tự, nhưng đối với kho được chia hai (mà không phải là chính xác trường hợp của bạn)
Lưu ý rằng bạn nên rebase sau khi ghép để loại làm cho nó "vĩnh viễn." – Dustin