Tôi có một git repo địa phương mà tôi tạo ra từ một repo svn:Làm thế nào để sao chép một repo git với tất cả các chi nhánh và thẻ từ refs/điều khiển từ xa?
$ git svn clone -s svn:...
Sau đó tôi tạo một bản sao lưu từ xa và đẩy tất cả mọi thứ với nó:
$ git remote add backup [email protected]:mybackup.git
$ git push --mirror backup
Bây giờ, khi tôi cố gắng sao chép từ sao lưu của tôi, nó thiếu tất cả các thẻ và các nhánh svn.
$ git clone [email protected]:mybackup.git
$ cd mybackup
$ git branch -a
* master
origin
remotes/origin/HEAD -> origin/master
remotes/origin/master
Làm cách nào để sao chép bản ghi nhớ bằng tất cả các thẻ và chi nhánh?
Cách duy nhất tôi đã tìm thấy là phản ánh các repo:
$ git clone --mirror [email protected]:mybackup.git
này tạo ra một mybackup.git
thư mục địa phương, mà biết về tất cả các thẻ/cành (Tôi có thể sử dụng hoàn tab để có được toàn bộ danh sách) nhưng nó không phải là một repo có thể sử dụng hợp lệ:
$ git checkout mytag
fatal: This operation must be run in a work tree
Phải có tùy chọn dòng lệnh để thực sự sao chép bản ghi nhớ với tất cả các chi nhánh/thẻ ???
Tôi đã tìm thấy một số câu hỏi liên quan ở đây nhưng không có câu trả lời nào phù hợp với tình huống này. Tôi giả sử sự khác biệt là bản sao của tôi đã được tạo ra với --mirror
?
Thông tin thêm: Tôi có thể thấy rằng các nhánh mà nhân bản mới của tôi biết nằm trong thư mục 'refs/heads' của bản sao lưu của tôi trong khi những cái tôi không tìm thấy trong' refs/remotes' (kỳ quặc, 'backup' cũng nằm trong 'refs/remotes' - tác dụng phụ của' --mirror' mà tôi giả định). –