2010-02-06 26 views
6

Tôi có thành công lớn với git push --mirror để tạo bản sao dự phòng cho một kho lưu trữ trống. Nhưng sau khi tìm kiếm trên SO và các nơi khác, tôi không thể tìm thấy cách để sao chép nội dung tại địa phương với tất cả các chi nhánh. Tôi không muốn sử dụng git clone vì tôi không muốn repo địa phương của tôi biết về repo trần. Nếu tôi sử dụng git pull, nó chỉ mang xuống nhánh HEAD.Đối diện với `git push --mirror`? Làm thế nào để lấy lại repo của tôi?

đoán:

git pull /data/Dropbox/backup/that_stuff.git * 

được tôi đâu, tất nhiên.

Làm cách nào để nhận toàn bộ repo với tất cả các nhánh trở lại? Tôi nhận ra rằng tôi có thể chỉ cần sao chép repo trần vào thư mục .git của tôi, nhưng điều đó có vẻ như là một ý tưởng tồi.

+0

Vì vậy, tôi đoán 'git bundle' từ 2 tuần trước không còn theo ý thích của bạn nữa? (http://stackoverflow.com/questions/2129214/backup-a-local-git-repository/2129286#2129286) – VonC

+1

@VonC cảm ơn rất nhiều vì điều đó. Mặc dù bạn đã trả lời câu hỏi một cách chuyên nghiệp, nhưng hóa ra nó không có ý nghĩa gì khi sao lưu vào một gói GIT trong DropBox. Nó cho biết thêm quá nhiều lưu lượng truy cập (đến máy chủ) và không có lợi thế. MIrror cũng nhanh hơn. Bây giờ nếu tôi chỉ có thể giải quyết vấn đề cuối cùng này :) –

+0

Chỉ cần hoàn thành câu trả lời của tôi với đúng ''*'' bạn đang tìm kiếm? – VonC

Trả lời

2

Hãy thử git fetch thay vì git pull

Kể từ git pull ở đó để lấy một chi nhánh và hợp nhất nó vào một chi nhánh địa phương, nó sẽ không làm cho rất nhiều ý nghĩa cố gắng để kết hợp tất cả chi nhánh từ xa đến một chi nhánh địa phương.

$ git fetch a-repo_url 

Lệnh bản trên tất cả các chi nhánh từ refs/heads/ namespace từ xa và lưu trữ chúng vào refs/remotes/remoteRpo/ namespace địa phương, trừ khi tùy chọn branch.<name>.fetch được sử dụng để xác định một refspec không mặc định..
Hãy thử:

$ git fetch a-repo-url +refs/heads/*:refs/heads/* 

có thể buộc lấy tất cả người đứng đầu đối với tất cả các chi nhánh.
Xem số SO question này.


Các OP yar báo cáo:

git pull /data/Dropbox/backup/mjdj.git/ +refs/heads/*:refs/heads/* 

công trình.

+0

Đã thử điều đó. GIT đáp ứng '* chi nhánh HEAD -> FETCH_HEAD ' ... vì vậy nó chỉ nhận được một. –

+0

Đã thử rằng lần cuối cùng với các dấu hoa thị ... tử vong: Từ chối tìm nạp vào các nhánh/đầu/nhánh hiện tại của kho không trống –

+0

@yar: Có thể nó cần một tham chiếu từ xa (http://www.kernel.org/ pub/software/scm/git/docs/git-remote.html), nhưng điều đó có nghĩa là "làm repo địa phương của bạn để biết về repo trần", đó không phải là những gì bạn muốn. – VonC

-1

Bạn có thể đạt được điều này với git-copy.

git copy /data/Dropbox/backup/that_stuff.git that_stuff.git 
Các vấn đề liên quan