2013-06-06 41 views
26

Làm cách nào để giải nén tất cả đối tượng của tệp gói?Làm cách nào để giải nén tất cả các đối tượng của kho lưu trữ git?

Tôi vừa nhân bản một kho lưu trữ từ xa, vì vậy kho lưu trữ cục bộ của tôi hiện không chứa bất kỳ đối tượng lỏng lẻo nào, chỉ có tệp .pack và tệp .idx.

Tôi đã thử chạy git unpack-objects < .git/objects/pack/pack-.pack, nhưng không có gì xảy ra.

Tôi đang làm gì đó sai? Có lệnh nào khác để làm điều đó không?

Trả lời

32

Bạn cần di chuyển các đối tượng gói bên ngoài thư mục .git/objects/pack trước khi sử dụng lệnh. Tuy nhiên, các tệp gói phải nằm trong kho lưu trữ.

Ví dụ: tạo tên thư mục SAMPLE trong thư mục gốc của dự án của bạn. Sau đó, di chuyển các tệp gói vào thư mục SAMPLE. Sau đó, bên trong kho lưu trữ không có các tệp gói, sử dụng lệnh git unpack-objects < SAMPLE/*.pack. Git sẽ tạo tất cả các đối tượng bên trong thư mục .git/objects của kho lưu trữ của bạn.

+9

Hacky, nhưng hợp lệ. Lý do làm việc này là 'git unpack-objects' sẽ không tạo ra các đối tượng đã có trong repo, và nhìn thấy như là tập tin gói trong repo nó không có gì. Điều này được giải thích rất rõ ràng trong 'get help unpack-objects'. –

+4

cảm ơn, chỉ một điều - các tệp gói không cần phải nằm trong repo –

+0

Tôi cũng sẽ thêm rằng có một tệp '.git/objects/info/packs' xuất hiện để liệt kê các tệp gói có sẵn trong' .git/đối tượng/gói'. Ngoài ra còn có tệp '.git/packed-refs' chứa danh sách các tham chiếu (đầu, thẻ) có sẵn thông qua các tệp gói. Tôi không chắc chắn phải làm gì với họ sau khi gỡ bỏ các tập tin gói - có thể họ cần phải được loại bỏ, có thể là 'git fsck' sẽ chăm sóc chúng - Tôi không biết. Chỉ cần một cái gì đó để ghi nhớ chỉ trong trường hợp ... – kostix

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