2011-08-18 31 views
7

Tôi mới sử dụng Git. Tôi muốn sao chép một kho lưu trữ từ xa lớn cho phép nói xyzcodebase. Cấu trúc của repo giống như tôi có thư mục src cho các khu chức năng khác nhau như hình dưới đây.Cách chọn lọc sao chép kho lưu trữ git

xyzcodebase 
| 
|__ Func area 1 
| 
|__ Func area 2 

tôi làm việc trên Functional area 2 vì thế trong khi nhân bản tôi không muốn mã từ Functional area 1 (kích thước lớn) sẽ tiết kiệm rất nhiều thời gian của tôi. Vì vậy, sau khi nhân bản, tôi sẽ chỉ có Functional area 2 mã nguồn trên kho lưu trữ cục bộ của mình.

Có cách nào để thực hiện việc nhân bản chọn lọc của kho lưu trữ git không?

Cảm ơn trước sự giúp đỡ của bạn

+0

xem chủ đề này: https://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of-a-git-repository – DoronG

Trả lời

5

Không, không có cách nào để chỉ sao chép một thư mục. Git lưu trữ lịch sử dưới dạng thay đổi đối với toàn bộ kho lưu trữ thay vì chỉ lưu trữ các subtrees là SVN.

Nếu dự án của bạn có nhiều chức năng, thì có thể tốt hơn là chia nó thành một số dự án phụ, với các kho khác nhau, và sau đó bao gồm các kho lưu trữ khác dưới dạng mô-đun con trong dự án chính. Nhưng nó phụ thuộc vào cách dự án của bạn được tổ chức.

+0

Cảm ơn câu trả lời của bạn. Nếu không sao chép, có thể tìm nạp chỉ một thư mục trong kho lưu trữ git trống không? –

+0

@Venam Vẫn không, nhưng bạn sẽ không cần. Khi bạn có toàn bộ kho lưu trữ, tìm nạp một vùng hoặc vùng kia sẽ là một hoạt động tương đối nhỏ. – meagar

+0

@Vaman Không thực sự, không may. 'clone' chỉ là cách ưa thích để nói' git init, git remote add, git fetch', vì vậy bạn vẫn phải chờ toàn bộ kho lưu trữ để chuyển. Bạn có thể lấy bản sao nông ('--depth' param) của kho lưu trữ, nhưng sau đó không có lịch sử đầy đủ, bạn không thể cam kết và đẩy từ xa, vì vậy nó chỉ tốt cho việc triển khai hoặc xem xét mã, chứ không phải để phát triển (trừ khi bạn gửi những thay đổi của bạn dưới dạng bản vá cho người có toàn bộ kho lưu trữ) – MBO

0

Đây là giải pháp hacky có thể trong trường hợp đặc biệt giúp giải quyết vấn đề của bạn. Cụ thể nếu bạn chỉ quan tâm đến một tập tin duy nhất bạn chỉ có thể tải nó từ giao diện điều khiển (trong Unix) thông qua wget: wget https://raw.githubusercontent.com/GITHUBUSER/REPOSITORY/master/file.ending

Bạn có thể lấy liên kết của một tập tin cụ thể bằng cách điều hướng đến nó trong github và sau đó nhấp vào "thô".

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