Sự khác biệt là khi sử dụng --mirror
, tất cả refs được sao chép như nó vốn có. Điều này có nghĩa là mọi thứ: các chi nhánh theo dõi từ xa, ghi chú, refs/originals/* (bản sao lưu từ bộ lọc-chi nhánh). Repo nhân bản có tất cả. Nó cũng được thiết lập sao cho bản cập nhật từ xa sẽ tìm nạp lại mọi thứ từ nguồn gốc (ghi đè lên các bản sao chép đã sao chép). Ý tưởng thực sự là phản chiếu kho lưu trữ, để có một bản sao tổng, để bạn có thể ví dụ lưu trữ repo trung tâm của bạn ở nhiều nơi, hoặc sao lưu nó lên. Hãy suy nghĩ của chỉ thẳng lên sao chép repo, ngoại trừ một cách git thanh lịch hơn nhiều.
mới documentation khá nhiều nói tất cả điều này:
--mirror
Thiết lập một tấm gương của các kho lưu trữ nguồn. Điều này ngụ ý --bare
. So với --bare
, --mirror
không chỉ ánh xạ các nhánh địa phương của nguồn tới các nhánh địa phương của mục tiêu, nó ánh xạ tất cả các ref (bao gồm các nhánh từ xa, ghi chú, vv) và thiết lập cấu hình refspec sao cho tất cả các ref này bị ghi đè bởi git remote update
kho lưu trữ đích.
câu trả lời ban đầu của tôi cũng lưu ý sự khác biệt giữa một bản sao trần và một (không trần) bản sao bình thường - clone phi trần thiết lập theo dõi từ xa ngành, chỉ tạo ra một chi nhánh địa phương cho HEAD
, trong khi clone trần sao chép trực tiếp các chi nhánh.
gốc Giả sử có một vài chi nhánh (master (HEAD)
, next
, pu
, và maint
), một số thẻ (v1
, v2
, v3
), một số chi nhánh từ xa (devA/master
, devB/master
), và một số refs khác (refs/foo/bar
, refs/foo/baz
, mà có thể là ghi chú, dấu gạch ngang, không gian tên của các nhà phát triển khác, những người biết).
git clone origin-url
(không trần): bạn sẽ nhận được tất cả các thẻ sao chép, một chi nhánh địa phương master (HEAD)
theo dõi một chi nhánh từ xa origin/master
, và chi nhánh ở xa origin/next
, origin/pu
, và origin/maint
. Các nhánh theo dõi được thiết lập sao cho nếu bạn làm một cái gì đó như git fetch origin
, chúng sẽ được tìm nạp như bạn mong đợi. Bất kỳ nhánh từ xa nào (trong nhân bản từ xa) và các tham chiếu khác đều bị bỏ qua hoàn toàn.
git clone --bare origin-url
: bạn sẽ nhận được tất cả các thẻ sao chép, ngành địa phương master (HEAD)
, next
, pu
, và maint
, không có các chi nhánh theo dõi từ xa. Đó là, tất cả các chi nhánh được sao chép như là, và nó được thiết lập hoàn toàn độc lập, không mong đợi tìm nạp lại. Bất kỳ nhánh từ xa nào (trong nhân bản từ xa) và các tham chiếu khác đều bị bỏ qua hoàn toàn.
git clone --mirror origin-url
: mỗi lần chỉnh sửa cuối cùng sẽ được sao chép. Bạn sẽ nhận được tất cả các thẻ, chi nhánh địa phương master (HEAD)
, next
, pu
và maint
, các chi nhánh từ xa devA/master
và devB/master
, các tham chiếu khác refs/foo/bar
và refs/foo/baz
. Tất cả mọi thứ là chính xác như nó đã được trong nhân bản từ xa. Theo dõi từ xa được thiết lập để nếu bạn chạy git remote update
tất cả các lần chỉnh sửa sẽ bị ghi đè từ nguồn gốc, như thể bạn vừa xóa gương và đã kéo lại nó. Như các tài liệu ban đầu đã nói, đó là một tấm gương. Nó được coi là một bản sao giống hệt chức năng, có thể hoán đổi cho nhau với bản gốc.
hữu ích, nhưng nếu bạn cũng muốn đẩy gương này vào repo từ xa như github, tôi tìm thấy [liên kết này] (https://help.github.com/articles/duplicating-a-repository#mirroring-a-repository) tiện dụng. –