2012-09-10 23 views
8

Vấn đề này là không giống như git - how to mirror file from other repo hoặc How do I update my bare repo?Làm thế nào để thay đổi một kho lưu trữ git nhân bản với --bare để khớp với một nhân bản vô tính với --mirror?

Từ một kho nhân bản với --mirror là một kho lưu trữ trần, tôi có thể làm cho một kho nhân bản với --bare giống như một nhân bản với --mirror? Nó có thể được thực hiện bằng cách thay đổi tập tin cấu hình không?

Nếu không, có phương pháp nào khác có thể chuyển đổi một kho lưu trữ trần sang kho lưu trữ gương không?

Một câu hỏi khác, Tại sao tôi không thể sử dụng lệnh git push --all trong gương repo, trong khi lệnh này có thể chạy trong repo trần?

+2

Bạn trivially có thể chỉnh sửa các tập tin cấu hình trong bất kỳ trình soạn. Chỉ cần làm cho nhánh tham chiếu đến cách chúng ở trong repo mirror (+ refs/*: refs/*), loại bỏ các nhánh theo dõi từ xa (từ các gói refs và refs/remote/*/*), thêm 'mirror = true' và chạy lại 'git fetch'. – fork0

+0

@ fork0 hoạt động tầm thường này dường như không hoạt động ... – thinke365

+0

chính xác những gì không hoạt động? Thông báo lỗi? (BTW, tôi đã không đề cập đến phần nào là 'mirror = true' được thêm vào. Nó là' [core] '). – fork0

Trả lời

2

Nếu bạn đã sao chép bản repo của mình với git clone --mirror, thì git push --all, theo sau default matching push policy, sẽ đẩy tất cả các chi nhánh địa phương đến bộ phận từ xa.

Nhưng nếu repo từ xa của bạn đã được thêm vào repo địa phương của bạn như là một tham chiếu từ xa (tức là repo địa phương của bạn đã được nhân bản từ khác repo từ xa), sau đó một git push --all secondRemoteRepo sẽ không tìm thấy nhiều chi nhánh phù hợp để đẩy tới, trừ khi bạn tìm nạp những nhánh đó trước.
Vì vậy, điều này sẽ làm việc:

git fetch secondRemoteRepo 
git push --all secondRemoteRepo 
8

Để thay đổi một kho nhân bản với git clone --bare thành một phù hợp với những gì nó sẽ là với một git clone --mirror, làm như sau:

$ git config remote.origin.fetch "+refs/*:refs/*" 
$ git config remote.origin.mirror true 

Sau đó làm một tất cả mọi thứ git fetch và nên được cập nhật.

0

Ngày nay:

git remote add --mirror=fetch origin <url> 

Sau đó

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