Impor proyek git yang ada ke GitLab?

147

Saya memiliki akun instalasi Gitlab tempat saya membuat repositori "ffki-startseite"

Sekarang saya ingin mengkloning repositori git://freifunk.in-kiel.de/ffki-startseite.gitke repositori itu dengan semua komit dan cabang, jadi saya bisa mulai mengerjakannya dalam lingkup saya sendiri.

Bagaimana saya bisa mengimpornya?

rubo77
sumber
3
Fitur baru gitlab, buat proyek dan kemudian pergi ke halaman proyek. Di sini Anda akan melihat instruksi dasar.
Martijn van Wezel
Kemungkinan duplikat mirroring repositori Gitlab
kelvin
Instruksi dasar telah hilang dalam versi Gitlab yang lebih baru, bisakah orang yang telah menyalinnya menyalinnya di sini?
jdevora

Jawaban:

156

Saya dapat sepenuhnya mengekspor proyek saya bersama semua komit, cabang, dan tag ke gitlab melalui perintah berikut yang dijalankan secara lokal di komputer saya:

Untuk menggambarkan contoh saya, saya akan menggunakan https://github.com/raveren/kint sebagai sumber repositori yang ingin saya impor ke gitlab. Saya membuat proyek kosong bernama Kint(di bawah namespace raveren) di gitlab sebelumnya dan ia memberi tahu saya url http git dari proyek yang baru dibuat ada http://gitlab.example.com/raveren/kint.git

Perintahnya adalah OS agnostik.

Dalam direktori baru :

git clone --mirror https://github.com/raveren/kint
cd kint.git
git remote add gitlab http://gitlab.example.com/raveren/kint.git
git push gitlab --mirror

Sekarang jika Anda memiliki repositori yang dikloning lokal yang Anda ingin tetap menggunakan dengan remote baru, jalankan saja perintah berikut * di sana:

git remote remove origin
git remote add origin http://gitlab.example.com/raveren/kint.git
git fetch --all

* Ini mengasumsikan bahwa Anda tidak mengubah nama master jarak jauh Anda dari origin, jika tidak, ubah dua baris pertama untuk mencerminkannya.

gua
sumber
1
Ini memberi saya kesalahan: remote: GitLab: Anda tidak diizinkan memaksakan kode push ke cabang yang dilindungi pada proyek ini. Ke 10.0.100.89:8496/project/james-project.git ! master [jauh ditolak] -> master (pra-terima kait ditolak)
James Hirschorn
4
Saya harus mematikan cabang yang dilindungi di Pengaturan -> Repositori untuk membuatnya berfungsi.
James Hirschorn
Lihat pertanyaan saya mengapa Anda akan menggunakan --mirror
Martijn van Wezel
108

Tambahkan remote gitlab baru ke repositori Anda yang ada dan tekan:

git remote add gitlab url-to-gitlab-repo
git push gitlab master

sumber
Aku harus mendorong dengan kekuatan, karena aku bermain-main di dalam gitLab sudah: git push gitlab master -f. Sekarang saya memiliki seluruh repo dengan semua komitmen di GitLab baru saya;) terima kasih
rubo77
19
Tidakkah Anda perlu melakukan cermin? Bagaimana jika Anda memiliki cabang lain selain master?
slhck
7
ya, dengan melakukan seperti yang disarankan OP, Anda kehilangan semua cabang (kecuali master) dan tag
raveren
Impor Proyek Gitlab akan memuat repo jarak jauh dari URL saat Anda membuat proyek. Termasuk instruksi untuk mengimpor repo svn.
rickfoosusa
1
git remote menambahkan gitlab url-to-gitlab-repo git push gitlab master --mirror
Saurabh
23

Untuk menyimpan SEMUA TAGS DAN CABANG

Cukup jalankan perintah ini di existing Git repository

cd existing_repo
git remote rename origin previous-hosts
git remote add gitlab [email protected]:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags
Jamie Hutber
sumber
Tidak menyalin semua cabang
Martijn van Wezel
19

Berikut langkah-langkah yang disediakan oleh Gitlab:

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.example.com/rmishra/demoapp.git
git push -u origin --all
git push -u origin --tags
Rajkaran Mishra
sumber
Ini hanya akan mendorong master dan bukan cabang lainnya
allkenang
18

Ini adalah perpindahan dasar satu repo ke lokasi baru. Saya menggunakan urutan ini sepanjang waktu. Dengan --bare tidak ada file sumber akan terlihat.

Buka Git Bash.
Buat tiruan kosong dari repositori.

git clone --bare https://github.com/exampleuser/old-repository.git

Dorong cermin ke repositori baru.

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git

Hapus repositori lokal sementara yang Anda buat pada langkah 1.

cd ../
rm -rf old-repository.git

Mengapa cermin? Lihat dokumentasi git: https://git-scm.com/docs/git-push

--semua Dorong semua cabang (yaitu referensi di bawah referensi / kepala /); tidak dapat digunakan dengan yang lain.

--mirror Alih-alih menamai setiap ref untuk mendorong, tentukan bahwa semua referensi di bawah referensi / (yang termasuk tetapi tidak terbatas pada referensi / kepala /, referensi / remote /, dan referensi / tag /) dicerminkan ke repositori jarak jauh. Referensi lokal yang baru dibuat akan didorong ke ujung jarak jauh, referensi yang diperbarui secara lokal akan diperbarui secara paksa di ujung jarak jauh, dan referensi yang dihapus akan dihapus dari ujung jarak jauh. Ini adalah default jika opsi konfigurasi jarak jauh..kaca diatur.

Martijn van Wezel
sumber
Bekerja dengan gitlab juga!
handuk
12

rake gitlab: import: repos mungkin merupakan metode yang lebih cocok untuk mengimpor massal:

  • salin repositori kosong di repos_path( /home/git/repositories/group/repo.git). Nama direktori harus diakhiri .gitdan berada di bawah ruang nama grup atau pengguna.
  • Lari bundle exec rake gitlab:import:repos

Pemilik akan menjadi admin pertama, dan sebuah grup akan dibuat jika belum ada.

Lihat juga: Bagaimana cara mengimpor repositori bare git yang ada ke Gitlab?

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
sumber
Bagi mereka yang mungkin bingung, repositori kosong adalah repositori yang biasanya ditempatkan di lokasi terpusat (mis. Github) yang TIDAK berisi folder .git di root repositori. Ini hanya opsi yang nyaman jika Anda memiliki akses ke server tempat repositori kosong disimpan. Kalau tidak, jawaban oleh @Raveren adalah pilihan terbaik.
TinkerTenorSoftwareGuy
4
git clone --mirror [email protected]:username/repo-name.git

git remote add gitlab ssh://[email protected]/username/repo.git

git push -f --tags gitlab refs/heads/*:refs/heads/*

Lebih baik melakukannya lebih dari ssh, https mungkin tidak akan berfungsi

Kazerm
sumber
"https mungkin tidak akan berfungsi" ini biasanya tidak berfungsi
Martijn van Wezel
Ini adalah hal yang sebenarnya karena koneksi HTTP dapat dinonaktifkan. Terima kasih atas jawabannya.
Mikha
2

Memindahkan proyek dari GitHub ke GitLab termasuk masalah, menarik permintaan Wiki, Tonggak Sejarah, Label, Rilis catatan dan komentar

Ada instruksi menyeluruh tentang GitLab Docs:

https://docs.gitlab.com/ee/user/project/import/github.html

tl; dr

  • Pastikan bahwa setiap pengguna GitHub yang ingin Anda petakan menjadi pengguna GitLab memiliki:

    • Akun GitLab yang telah masuk menggunakan ikon GitHub - atau -
    • Akun GitLab dengan alamat email yang cocok dengan alamat email publik pengguna GitHub
  • Dari bilah navigasi atas, klik + dan pilih Proyek baru.

  • Pilih tab Impor proyek dan kemudian pilih GitHub.
  • Pilih tombol pertama untuk Mendaftar repositori GitHub Anda. Anda diarahkan ke halaman di github.com untuk mengotorisasi aplikasi GitLab.
  • Klik Otorisasi gitlabhq. Anda diarahkan kembali ke halaman Impor GitLab dan semua repositori GitHub Anda terdaftar.
  • Lanjutkan ke memilih repositori mana yang akan diimpor.

Tapi Silakan baca halaman GitLab Docs untuk detail dan kaitannya!

(tidak banyak)

rubo77
sumber
1

Gitlab sedikit disadap pada fitur ini. Anda dapat kehilangan banyak waktu melakukan pemecahan masalah khusus jika proyek Anda besar.

Solusi terbaik adalah menggunakan alat buat / impor, jangan lupa cantumkan nama pengguna dan kata sandi Anda, jika tidak, tidak akan mengimpor apa pun.

Ikuti tangkapan layar saya

masukkan deskripsi gambar di sini

JBarros35
sumber