Theo mặc định/bản thân:
số
Yes.
Git hoạt động trên cơ sở nó tạo ra ảnh chụp nhanh các tệp và không có sự khác biệt gia tăng như các VCS khác.
EDIT
Như đã đề cập bởi Dave và opatut, hiểu biết của tôi về cách git lưu trữ tập tin không chính xác và tôi xin lỗi vì sự nhầm lẫn gây ra. Sau khi thực hiện nhiều nghiên cứu, Git lưu trữ các tệp trùng lặp dưới dạng con trỏ tới 1 tệp. Trích dẫn VonC trong câu trả lời được chấp nhận của this question,
... một số tệp có cùng nội dung chỉ được lưu một lần.
Xin lưu ý rằng như đã đề cập trong câu trả lời đó, khái niệm ...
Tham chiếu git-scm documentation:
Git nghĩ về dữ liệu của nó giống như một bộ cảnh chụp từ nhỏ hệ thống tập tin. Mỗi khi bạn cam kết, hoặc lưu trạng thái của dự án của bạn trong Git, về cơ bản nó có một hình ảnh về tất cả các tệp của bạn trông như thế nào tại thời điểm đó và lưu trữ một tham chiếu đến ảnh chụp nhanh đó. Để hiệu quả, nếu các tệp chưa thay đổi, Git không lưu trữ lại tệp, chỉ một liên kết vào tệp giống hệt trước đó mà tệp đã lưu trữ. Git nghĩ về dữ liệu của nó giống như một dòng ảnh chụp nhanh.
Tuy nhiên, về mặt kĩ lưu trữ, đồng bằng châu thổ vẫn được sử dụng trong đó Git cố gắng để tạo ra vùng đồng bằng nhỏ nhất có thể dựa trên lựa chọn dựa trên kinh nghiệm của các đốm màu càng nhanh càng tốt, có những lựa chọn tối ưu hóa cho việc nén. Điều này sẽ làm giảm kích thước của kho lưu trữ.
Cũng như được thử nghiệm bởi opatut trong pastebin link đầu ra từ nhận xét, đối tượng trùng lặp chỉ được lưu trữ một lần. Điều đó có nghĩa là git sẽ nhận ra các tệp nhị phân trùng lặp và chỉ lưu trữ chúng một lần. Đó là những gì câu hỏi ban đầu được yêu cầu. Sau đây là các tùy chọn khác để xử lý các tệp trùng lặp.
thay thế khác: symlink
Bạn có thể thiết lập liên kết tượng trưng để các tập tin trước đó, như vậy khi bạn làm việc trên họ, họ sẽ trỏ đến file lớn cùng, tuy nhiên lưu ý rằng git không theo dõi các tệp mà các liên kết tượng trưng trỏ đến, nghĩa là chúng sẽ chỉ chỉ lưu trữ liên kết tượng trưng. Điều này đáp ứng nhu cầu của bạn để giảm không gian, với sự hy sinh của tính di động, nghĩa là, nếu bạn di chuyển đến một máy tính khác, bạn sẽ phải chắc chắn rằng các tập tin là nơi các liên kết tượng trưng trỏ đến. Mà có thể không phải là những gì bạn muốn. Xem this very good SO Q&A về những gì git làm với các liên kết tượng trưng.
Một giải pháp thay thế khác: công cụ!
Tôi đã tìm thấy nhiều công cụ có thể giúp hoàn thành những gì bạn cần khi quản lý tệp nhị phân. Bạn có thể thử git-annex
, nơi mà về cơ bản nó chỉ theo dõi phiên bản mới nhất của tệp nhị phân và phần còn lại được duy trì bởi các liên kết tượng trưng, do đó theo cách này, cách xử lý biểu tượng tự động hơn. Here's their project site.
Hoặc được xây dựng trong git-submodules
và một repo riêng biệt để đạt được những gì bạn muốn, nơi bạn chỉ tìm nạp các tệp nhị phân lớn để sử dụng chúng.
Phải thừa nhận rằng tôi không thử các tùy chọn này, vì vậy, đây là liên kết tham chiếu để đọc thêm giải thích về chúng. Tham khảo: Tham chiếu: this SO question
Thú vị ... điều này sẽ tạo ra rất nhiều ý nghĩa và tôi đã tự hỏi nếu đây là những gì đang xảy ra. Tôi sẽ phải làm một số đào để xem nếu điều này thực sự là trường hợp (khi tôi nhận được một số thời gian miễn phí). – JoshJ
pastebin.com/p0KpqBPX cho những người bạn quá lười biếng để thử nghiệm :) Cùng một đối tượng, chỉ cần thêm một chút không gian cần thiết hơn 1 tệp trong .git/objects – opatut
Nó không phải là lười biếng, chỉ thiếu thời gian :) Làm tốt lắm! – JoshJ