Saya perlu mentransfer repo lengkap ke mesin non-jaringan baru, lebih disukai sebagai entitas file tunggal. Git bundel memungkinkan git fetch
, git pull
operasi gaya dalam lingkungan sneakernet tetapi tampaknya berasumsi bahwa Anda sudah memiliki versi kerja dari repo pada mesin tujuan.
Apa doa yang tepat untuk:
- Gabungkan semua cabang di repo saat ini
- Jalankan repo baru di direktori tujuan, misalnya, dapatkan root commit dengan benar
Saya telah mengirim tambalan ke hulu untuk mengklarifikasi:
`git clone` can use any bundle created without negative refspecs
(e.g., `new`, but not `old..new`).
If you want to match `git clone --mirror`, which would clone other
refs such as `refs/remotes/*`, use `--all`.
If you want to provide the same set of refs that a clone directly
from the source repository would get, use `--branches --tags` for
the `<git-rev-list-args>`.
Jadi yang $ git bundle create repo.bundle --branches --tags
paling cocok adalah kloning.
$ git bundle create repo.bundle --all
akan memberikan gambar cermin dari mesin sumber Anda, termasuk referensi jarak jauhnya.
--all
opsinya tidak ada di halaman manual saya untukbundle
(saya melihat versi 1.7.6.msysgit.0), juga tidak menggunakan file .bundle di bagian URL untukclone
. Ini memberi saya kepercayaan diri yang lebih besar untuk merekomendasikan penggunaannya.git bundle create <file> <git-rev-list-args>
. Berlariman git-rev-list
(atauman git-log
) akan memberi Anda--all
. Tetapi saya setuju bahwa itu harus lebih terlihat dalam dokumentasi perintah bundel.git show-ref
", yang tidak menyertakan [daftar] opsi git-rev-list.git-rev-list-args
adalah bagaimana Anda memilih ref yang ditunjukkan olehgit show-ref
perintah.--all
memang menyertakan cabang pelacakan jarak jauh untuk saya (git 2.1.4). Saya bisa melihatrefs/remotes/origin/*
dengangit bundle list-heads bundlefile
ataugit ls-remote bundlefile
. Meskipun mendapatkannya kembali dari bundel agak rumit.Pertama, klon repositori, dan sertakan
--mirror
opsinya.git clone --mirror [email protected]:path/repo.git
Ini memastikan semua cabang jarak jauh juga merupakan cabang lokal yang siap untuk digabungkan.
Lalu lari
git bundle create repo.bundle --all
seperti yang dijelaskan oleh jawaban dari Jakub Narębskisumber
Saya sarankan Anda memasang tar atau zip folder .git dan cukup unpack di lokasi baru dan kemudian lakukan
git reset --hard HEAD
. Semua yang diperlukan untuk semua cabang ada di bawah .git dan yang perlu Anda lakukan hanyalah menyesuaikan remote di file .git / config atau menghapusnya.sumber