Saya memiliki server yang akan saya hancurkan. Satu-satunya hal yang tersisa untuk saya migrasi adalah repositori saya. Server ini terdaftar sebagai asal (master) untuk salah satu proyek saya. Apa cara yang tepat untuk memindahkan repositori untuk menyimpan sejarah.
264
Jawaban:
Untuk menambahkan lokasi repo baru,
Kemudian dorong konten ke lokasi baru
Akhirnya hapus yang lama
Setelah itu Anda dapat melakukan apa yang dikatakan bdonlan dan mengedit file.git / config untuk mengubah new_repo_name menjadi asal. Jika Anda tidak menghapus sumber asli (repositori jarak jauh asli), Anda cukup mendorong perubahan ke repo baru
sumber
git push -u new_repo_name --all
.git remote rename new_repo_name origin
Jika Anda ingin memigrasi semua cabang dan tag, Anda harus menggunakan perintah berikut:
untuk mengkloning repo lama dengan semua cabang
untuk mengatur remote baru
untuk mendorong semua referensi di bawah referensi / kepala (yang mungkin Anda inginkan)
sumber
--tags
danrefs/heads/*:refs/heads/*
tidak kompatibel dengan--mirror
. stackoverflow.com/a/26552740/1484831 bekerja dengan baik.refs/heads/refs/heads
menggunakangit push -f --tags remoteName refs/heads/*:refs/heads/*
jadi saya telah bertukar kegit push remoteName --mirror
push
juga mendukung--mirror
.git clone --mirror; cd repo; git push --mirror new_remote
harus melakukan trikIni berhasil bagi saya dengan sempurna .
Saya harus menyebutkan bahwa ini menciptakan cermin dari repo Anda saat ini dan kemudian mendorongnya ke lokasi baru. Oleh karena itu, ini membutuhkan waktu untuk repo besar atau koneksi yang lambat .
sumber
git push --mirror origin
lebih-f
.Salin. Sangat sederhana. :)
Di sisi klien, cukup edit .git / config di repo lokal klien untuk mengarahkan remote Anda ke URL baru sebagaimana diperlukan.
sumber
Ini semacam dilakukan di bagian dalam beberapa jawaban lainnya.
sumber
--mirror
dalam dorongan jauh lebih penting: ini harus menjadi jawaban yang benargit init --bare
Saya hanya memposting ulang apa yang orang lain katakan, dengan sederhana untuk mengikuti daftar instruksi.
Memindahkan repositori: Cukup masuk ke server baru,
cd
ke direktori induk tempat Anda ingin menyimpan repositori, dan gunakanrsync
untuk menyalin dari server lama:Buat klien menunjuk ke repositori baru: Sekarang pada setiap klien menggunakan repositori, cukup hapus pointer ke asal yang lama, dan tambahkan satu ke yang baru.
sumber
git remote set-url origin [email protected]:path/to/repository.git
Lihatlah resep ini di GitHub: https://help.github.com/articles/importing-an-external-git-repository
Saya mencoba sejumlah metode sebelum menemukan
git push --mirror
.Bekerja seperti pesona!
sumber
git clone --mirror ...
,git remote add ...
,git push --mirror ...
Saya mengikuti instruksi pada BitBucket untuk memindahkan repo dengan semua cabangnya di sana. Inilah langkah-langkah dengan penjelasan berikut
#
karakter:Bekerja dengan baik untuk saya.
sumber
Silakan ikuti langkah-langkahnya:
sumber
Ini adalah variasi dari jawaban ini , saat ini disarankan oleh gitlab untuk "memigrasi" repositori git dari satu server ke yang lain.
Mari kita asumsikan bahwa proyek lama Anda dipanggil
existing_repo
, disimpan dalamexisting_repo
folder.Buat repo di server baru Anda. Kami akan menganggap bahwa url dari proyek baru itu adalah
git@newserver:newproject.git
Buka antarmuka baris perintah, dan masukkan yang berikut ini:
Manfaat dari pendekatan ini adalah Anda tidak menghapus cabang yang sesuai dengan server lama Anda.
sumber
Anda dapat menggunakan perintah berikut:
Contoh dari http://gitref.org/remotes/
sumber
Seharusnya sesederhana:
Dengan cara ini Anda menyimpan nama
origin
untuk repo baru Anda - lalu dorong ke repo baru yang lama seperti yang terinci dalam jawaban lainnya. Andaikata Anda bekerja sendirian dan Anda memiliki repo lokal yang ingin Anda pantulkan dengan semua cruft Anda di dalamnya, Anda mungkin juga (dari dalam repo lokal Anda)tetapi lihat "git push --mirror" cukup untuk mencadangkan repositori saya? (semuanya tidak digunakan
--mirror
tetapi sekali).sumber
ikuti instruksi ini Jika Anda ingin menjaga semua komit dan cabang dari repo lama ke baru
sumber
Anda dapat menggunakan git-copy untuk menggandakan repo dengan semua riwayat.
sumber
Jika Anda ingin berpindah dari satu sumber ke sumber lain dan juga menyimpan cadangan sumber asal Anda saat ini di mesin lokal Anda, Anda bisa menggunakan langkah-langkah ini:
Sekarang di folder lakukan
Perintah di atas memberikan url asal remote saat ini, berguna untuk mengatur asal kembali pada langkah terakhir
Perintah di atas menetapkan asal jarak jauh ke lokasi baru
Perintah di atas mendorong cabang lokal aktif saat ini ke jarak jauh dengan mengembangkan branchname. Tentu saja mempertahankan semua sejarah karena dengan git semua sejarah juga didorong.
Perintah di atas mengatur kembali asal remote ke asal Anda saat ini: Anda menginginkan ini karena Anda berada di folder yang ada dan Anda mungkin tidak ingin mencampur nama folder lokal Anda saat ini dengan folder baru yang akan Anda buat untuk mengkloning repo Anda baru saja didorong.
Semoga ini membantu,
sumber
Jika Anda ingin memigrasi repositori #git dari satu server ke yang baru, Anda dapat melakukannya seperti ini:
Semua cabang dan tag jarak jauh dari repositori lama akan disalin ke repositori baru.
Menjalankan perintah ini sendiri:
hanya akan menyalin cabang master (hanya cabang pelacakan) ke repositori baru.
sumber