Jika Anda ingin melestarikan cabang yang ada dan menjalankan riwayat, inilah salah satu cara yang berhasil untuk saya.
git clone --mirror https://github.com/account/repo.git cloned-repo
cd cloned-repo
git push --mirror {URL of new (empty) repo}
# at this point only remote cloned-repo is correct, local has auto-generated repo structure with folders such as "branches" or "refs"
cd ..
rm -rf cloned-repo
git clone {URL of new (empty) repo}
# only now will you see the expected user-generated contents in local cloned-repo folder
# note: all non-master branches are avaialable, but git branch will not show them until you git checkout each of them
# to automatically checkout all remote branches use this loop:
for b in `git branch -r | grep -v -- '->'`; do git branch --track ${b##origin/} $b; done
Sekarang, misalkan Anda ingin menjaga repo sumber dan tujuan tetap sinkron untuk jangka waktu tertentu. Misalnya, masih ada aktivitas dalam repo jarak jauh saat ini yang ingin Anda pindahkan ke repo baru / pengganti.
git clone -o old https://github.com/account/repo.git my-repo
cd my-repo
git remote add new {URL of new repo}
Untuk menurunkan pembaruan terbaru (dengan asumsi Anda tidak memiliki perubahan lokal):
git checkout {branch(es) of interest}
git pull old
git push --all new
NB: Saya belum menggunakan submodul, jadi saya tidak tahu langkah tambahan apa yang mungkin diperlukan jika Anda memilikinya.