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?


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.


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

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 git@git.hutber.com:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags

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

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.


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?


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 git@github.com:username/repo-name.git

git remote add gitlab ssh://git@servername.com/username/repo.git

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

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


"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)


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.