2012-09-08 32 views
7

Tôi biết rằng tôi có thể tạo một kho lưu trữ mới từ một thư mục của kho lưu trữ git. Xem tại đây: https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/Làm cách nào để sao chép thư mục từ kho lưu trữ git này sang kho lưu trữ git khác, lưu giữ lịch sử?

Tuy nhiên, làm cách nào để sao chép thư mục từ một kho lưu trữ sang thư mục mới của một kho lưu trữ hoàn toàn khác, trong khi vẫn giữ lịch sử của thư mục đó?

Cập nhật: liệu lịch sử đó có thể hiển thị với nhật ký git không?

+0

URL GitHub bây giờ là: https://help.github.com/articles/splitting-a-subpath-out- vào một kho lưu trữ mới –

Trả lời

6

Bạn có thể thực hiện việc này với git filter-branch. Về cơ bản bạn muốn:

  1. Tách đường con trong dự án đầu tiên vào kho lưu trữ mới bằng liên kết bạn đã tìm thấy.
  2. Đẩy nó vào điều khiển từ xa của dự án thứ hai trên một nhánh duy nhất.
  3. Fetch chi nhánh đó vào kho thứ hai, sau đó sử dụng git filter-branch để chỉ số lọc nó vào thư mục con đúng:

    git filter-branch --index-filter ' 
        git ls-files -sz | 
        perl -0pe "s{\t}{\tnewsubdir/}" | 
        GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ 
         git update-index --clear -z --index-info && 
         mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE" 
    ' HEAD 
    
  4. Cuối cùng, kiểm tra các master chi nhánh của dự án thứ hai (hoặc bất kỳ chi nhánh bạn sử dụng), sau đó nhập vào nhánh mới được lọc.

Thực sự không quá khủng khiếp khi hoạt động, tất cả đã nói. Như ghi chú trong AlexanderGladysh, bạn cũng có thể sử dụng một số subtree merging strategy thay cho các bước 3 và 4.

+0

Bạn không thể sử dụng chiến lược hợp nhất subtree thay vì bước 3 và 4? –

+0

@AlexanderGladysh Có. Bạn có thể làm điều đó với một chiến lược sáp nhập subtree. Tôi đã chỉnh sửa câu trả lời cho phù hợp. – Christopher

+0

Hmm. Tôi quyết định đi với một chiến lược hợp nhất subtree. Một vấn đề là đăng nhập git trên thư mục đó chỉ hiển thị cam kết hợp nhất cuối cùng không phải toàn bộ lịch sử: (.Đó là mong đợi không? – namin

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