Câu trả lời:
Như @Chris đã đề cập, các phiên bản hiện tại của Git không hỗ trợ thanh toán thưa thớt.
Để chuyển đổi một repo cục bộ để chỉ chứa các thư mục được chỉ định:
cd <repo/location>
git config core.sparsecheckout true
echo desiredDir/ >> .git/info/sparse-checkout # repeat to add multiple subdirs (the rest will be removed)
Bây giờ, để loại bỏ tất cả, nhưng các thư mục được chỉ định:
git read-tree -mu HEAD # remove all, but those in .git/info/sparse-checkout
Tôi nghĩ rằng tương đương gần nhất với xuất khẩu svn sẽ là kho lưu trữ git . Bạn có thể kéo các thư mục path/to/module
từ các bậc thầy chi nhánh của một kho lưu trữ và đặt trong thư mục địa phương module-name
như thế này:
git archive --remote=url-of-Git-repository --prefix=module-name/ master:path/to/module |
tar xf -
Nếu máy chủ từ xa không hỗ trợ lưu trữ, thì hãy kéo kho lưu trữ từ một bản sao (cục bộ) cục bộ (sử dụng bản sao trần để tránh có một bản sao khác của tệp trong kho lưu trữ cục bộ, nếu điều đó quan trọng).
Tuy nhiên, việc bạn sử dụng kiểm tra trên mạng của bạn, hãy nói với tôi rằng bạn muốn có một cây công việc Git chức năng chỉ với một số tệp hiện có. Người ta có thể thực hiện điều này với chức năng kiểm tra thưa thớt trên mạng được giới thiệu trong Git 1.7.0.
Kích hoạt chức năng này bằng cách
điền vào $GIT_DIR/info/sparse-checkout
tệp trên mỗi kho lưu trữ với các mẫu cho tên đường dẫn để giữ ** .
Người ta có thể sử dụng bit Skip-worktree bit cấp thấp trong chỉ mục *** để quản lý độ thưa của các tệp riêng lẻ, nhưng có lẽ dễ sử dụng cơ chế cấp cao hơn thay thế.
Có một số lỗ hổng trong giao diện người dùng tổng thể (nghĩa là không có cách nào dễ dàng để nói rằng sao chép kho lưu trữ tại URL này mà chỉ kiểm tra X, Y và Z.
* Xem “core.sparseCheckout” trong git config manpage
** xem “thanh toán thưa thớt” trong git read-cây manpage
*** thấy “chút Skip-worktree” trong git update-index manpage
module-1
, module-2
và file-a
là tất cả các ví dụ về tên đường dẫn của các tệp được lưu trữ trong cây được tham chiếu bởi cam kết được tham chiếu bởi ref master
trong kho lưu trữ. Ví dụ mới đặt đặc tả thư mục trực tiếp vào đối số cây-ish để nó có thể sử dụng --prefix
tùy chọn để trích xuất một thư mục từ kho lưu trữ trực tiếp vào một thư mục cục bộ của một tên khác.
Không, điều đó là không thể trong Git.
Việc thực hiện một cái gì đó như thế này trong Git sẽ là một nỗ lực đáng kể và điều đó có nghĩa là tính toàn vẹn của kho lưu trữ khách hàng không còn có thể được đảm bảo. Nếu bạn quan tâm, hãy tìm kiếm các cuộc thảo luận về "bản sao thưa thớt" và "tìm nạp thưa thớt" trong danh sách gửi thư git.
svn export
xuất bản sao không hoạt động để sử dụng sản xuất). Làm gìmodule-1
tương ứng với? Các thư mục trong kho lưu trữ?