Transfer repositori git dari GitLab ke GitHub - dapatkah kita, bagaimana caranya dan perangkapnya (jika ada)?

204

Bisakah seseorang mentransfer repositori dari GitLab ke GitHub jika perlu. Jika demikian, bagaimana tepatnya saya bisa melakukan hal yang sama?

Juga, apakah ada jebakan dalam melakukan hal itu atau tindakan pencegahan yang perlu saya ingat sebelum melakukannya mengingat bahwa saya mungkin memutuskan untuk akhirnya memindahkannya ke GitHub (karena memiliki lebih banyak fitur pada saat itu yang mungkin berguna untuk proyek saya ).

boddhisattva
sumber

Jawaban:

210

Anda dapat mentransfernya (hanya dengan menambahkan remote ke repo GitHub dan dengan mendorongnya)

  • buat repo kosong di GitHub
  • git remote add github https://[email protected]/yourLogin/yourRepoName.git
  • git push --mirror github

Sejarahnya akan sama.

Tetapi Anda akan kehilangan kontrol akses (tim yang ditentukan dalam GitLab dengan hak akses khusus pada repo Anda)

Jika Anda menghadapi masalah dengan URL https dari repo GitHub:

The requested URL returned an error: 403

Yang perlu Anda lakukan adalah memasukkan kata sandi GitHub Anda, tetapi OP menyarankan:

Maka Anda mungkin perlu mendorongnya dengan cara ssh. Anda dapat membaca lebih lanjut tentang cara melakukannya di sini.

Lihat " Mendorong ke Git mengembalikan Kode Kesalahan 403 fatal: Permintaan HTTP gagal ".

VONC
sumber
Terima kasih Von - jawaban Anda melakukan trik untuk saya. Saya baru saja menambahkan sedikit ke jawaban Anda mengenai git remote add cmd yang tepat dan mendorong semuanya dengan cara ssh jika perlu. Semoga tidak apa-apa.
boddhisattva
@boddhisattva Tidak apa-apa, tapi saya melihat hasil edit Anda ditolak. Saya telah menambahkannya kembali dalam jawaban saya sendiri.
VonC
5
Adakah komentar tentang masalah impor dan label? Bisakah kode selain diimpor dengan cara menarik dan mendorong? Terima kasih.
@YakovK Saya tidak mengetahui proses otomatis dengan mempertimbangkan PR dan masalah. Setidaknya, PR dalam GitHub adalah cabang (lihat stackoverflow.com/a/30542987/6309 ), sehingga dapat diimpor.
VonC
1
@kiki itu akan mendorong semua cabang lokal, tetapi jika repo lokal Anda sendiri adalah tiruan, ia hanya akan memiliki master sebagai cabang lokal yang diperiksa. Anda harus terlebih dahulu membuat cabang lokal lainnya setelah cabang pelacakan jarak jauh yang berulang, sebelum menggunakan push --mirror. stackoverflow.com/a/18911322/6309 . Lihat juga alternatif yang disebutkan di stackoverflow.com/a/24099141/6309 (kalimat terakhir)
VonC
149

Ini sangat mudah dengan mengimpor fitur repositori Login ke github.com,

Di sisi gambar profil Anda akan menemukan +klik tombol itu maka akan ada opsi untuk import repository. Anda akan menemukan halaman seperti ini. masukkan deskripsi gambar di sini URL klon repositori lama Anda diperlukan, yaitu url gitlab repo dalam kasus Anda. kemudian pilih Pemilik dan kemudian ketik nama untuk repo ini dan klik untuk memulai tombol impor.

manoj
sumber
33
Itu sangat nyaman bahwa GitHub telah menambahkan itu. Namun, itu tidak akan berfungsi jika itu adalah GitLab internal di balik firewall, yang mewakili kasus penggunaan besar untuk GitLab.
Abalter
7
Hanya catatan singkat untuk orang lain yang menggunakan opsi impor. Saya harus menonaktifkan MFA di GitLab agar ini berfungsi.
Hari-
2
Ini berfungsi dengan baik. Jauh lebih baik daripada jawaban yang diterima
LnxSlck
Bagaimana jika saya ingin mengimpor cabang?
coderInrRain
1
Repositori yang diimpor tidak harus menjadi publik sekarang, karena github telah membuat menambahkan repositori pribadi gratis.
Shrey Garg
7

Saya memiliki masalah yang berlawanan dan akhirnya harus membuat skrip bash shell saya sendiri agar perusahaan dapat melakukan migrasi ratusan repo dari Github ke Gitlab karena perubahan dalam kebijakan perusahaan.
Script menggunakan API Gitlab untuk membuat repo dari jarak jauh, dan mendorong repo Github ke dalamnya. Belum ada file README.md, tetapi sh telah didokumentasikan dengan baik.
Hal yang sama bisa dilakukan dengan cara yang saya bayangkan. Semoga ini bisa membantu.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh

SamiX
sumber
2

Jika Anda mengaktifkan MFA di GitLab, Anda harus pergi ke Pengaturan Repositori / Repositori -> Menyebarkan Tombol dan membuatnya, kemudian menggunakannya sebagai login saat mengimpor repo di GitHub

Alex Mokrushin
sumber