Mevcut bir git projesi GitLab'a aktarılsın mı?


146

"Ffki-startseite" havuzunu oluşturduğum bir Gitlab kurulumu hesabım var

Şimdi git://freifunk.in-kiel.de/ffki-startseite.gitdepoyu, tüm taahhütler ve dallarla birlikte o depoya klonlamak istiyorum , böylece kendi kapsamımda çalışmaya başlayabilirim.

Nasıl içe aktarabilirim?


3
Gitlab'ın yeni bir özelliği, proje oluşturun ve ardından proje sayfasına gidin. Burada temel talimatları göreceksiniz.
Martijn van Wezel


Temel talimatlar Gitlab'ın yeni sürümlerinde kayboldu, onları kopyalayan herhangi biri bunları buraya kopyalayabilir mi?
jdevora

Yanıtlar:


158

Bilgisayarımda yerel olarak çalıştırılan aşağıdaki komutlarla projemi tüm taahhütler, dallar ve etiketlerle birlikte gitlab'a tamamen dışa aktarabildim :

Örneğimi açıklamak için gitlab'a aktarmak istediğim kaynak depo olarak https://github.com/raveren/kint kullanacağım. Önceden gitlab'da Kint(ad alanı altında raveren) adlı boş bir proje oluşturdum ve bana yeni oluşturulan projenin http git url'sinin http://gitlab.example.com/raveren/kint.git olduğunu söyledi

Komutlar işletim sisteminden bağımsızdır.

Bir de yeni dizinde:

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

Şimdi, yeni uzaktan kumandayla kullanmaya devam etmek istediğiniz yerel olarak klonlanmış bir deponuz varsa, aşağıdaki komutları * orada çalıştırın:

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

* Bu, uzak ana yöneticinizi yeniden adlandırmadığınızı origin, aksi takdirde ilk iki satırı yansıtacak şekilde değiştirdiğinizi varsayar .


1
Bu bana şu hatayı veriyor: uzak: GitLab: Bu projede korumalı bir dala zorlama kodu zorlamanıza izin verilmiyor. To 10.0.100.89:8496/project/james-project.git ! [uzaktan reddedildi] ana -> ana (önceden alma kancası reddedildi)
James Hirschorn

4
Bunun çalışması için Ayarlar -> Depo'da korunan dalları kapatmam gerekti.
James Hirschorn

Kullanmak neden benim soruya bakın --mirror
Martijn van Wezel

108

Yeni gitlab uzaktan kumandasını mevcut deponuza ekleyin ve itin:

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

Zaten gitLab etrafında oynadım çünkü ben, kuvvetle itin zorundaydı git push gitlab master -f. Şimdi yeni GitLab'imde tüm işlemlerin olduğu tüm depoya sahibim;) teşekkürler
rubo77

19
Bir ayna yapmana gerek yok mu? Ya usta dışında başka dallarınız olsaydı?
slhck

7
evet, OP'nin önerdiği şekilde yaparak, tüm dalları (master hariç) ve etiketleri kaybedersiniz
raveren

Gitlab Projesi İçe Aktarma, projeyi oluşturduğunuzda uzak depoyu bir URL'den yükleyecektir. Svn depolarını içe aktarmak için talimatlar içerir.
rickfoosusa

1
git uzaktan ekle gitlab url-to-gitlab-repo git itme gitlab master --mirror
Saurabh

23

TÜM ETİKETLERİ VE ŞUBELERİ korumak için

Sadece bu komutu bir 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

Tüm şubeleri kopyalamayın
Martijn van Wezel

20

Gitlab tarafından sağlanan adımlar şunlardır:

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

Bu yalnızca ana değil, diğer dalları itecektir
allkenang

18

Bu, bir deponun yeni konuma taşınmasıdır. Bu diziyi her zaman kullanırım. --Bare ile kaynak dosyalar görünmez .

Git Bash'i açın.
Deponun çıplak bir klonunu oluşturun.

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

Yeni depoya yansıtma itin.

cd old-repository.git

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

1. adımda oluşturduğunuz geçici yerel depoyu kaldırın.

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

Neden ayna? Git belgelerine bakın: https://git-scm.com/docs/git-push

--all Tüm dalları itin (örn. refs / Heads / altındaki referanslar); başkalarıyla kullanılamaz.

--mirror Her ref'i itmek için adlandırmak yerine, refs / altındaki tüm referansların (refs / head /, refs / remotes / ve refs / etiketleri / içerir ancak bunlarla sınırlı değildir) uzak depoya yansıtılacağını belirtir. Yeni oluşturulan yerel referanslar uzak uca gönderilecek, yerel olarak güncellenen referanslar uzak uçta zorunlu olarak güncellenecek ve silinen referanslar uzak uçtan kaldırılacaktır. Remote..mirror yapılandırma seçeneği ayarlandıysa bu varsayılandır.


Gitlab ile de çalışır!
havlu

12

rake gitlab: içe aktar: depolar toplu içe aktarma için daha uygun bir yöntem olabilir:

  • çıplak depoyu repos_path( /home/git/repositories/group/repo.git) altına kopyalayın . Dizin adı, .gitbir grup veya kullanıcı ad alanı ile bitmeli ve altında olmalıdır .
  • Çalıştırmak bundle exec rake gitlab:import:repos

Sahip ilk yönetici olacak ve halihazırda yoksa bir grup oluşturulacak.

Ayrıca bakınız: Mevcut bir çıplak git deposunu Gitlab'a nasıl aktarabilirim?


Kafası karışabilecek kişiler için, çıplak depo genellikle deponun kökünde .git klasörünü İÇERMEYEN merkezi konumda (örneğin github) yer alan depodur. Bu, yalnızca çıplak havuzun depolandığı sunucuya erişiminiz varsa uygun bir seçenektir. Aksi takdirde @Raveren'ın cevabı en iyi seçenektir.
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/*

Bunu ssh üzerinden yapmak daha iyidir, https çalışmayabilir


"https işe yaramayabilir" bu normalde bir şey değil
Martijn van Wezel

Bu aslında HTTP bağlantıları devre dışı bırakılabileceği için bir şeydir. Cevap için teşekkürler.
Micah

2

Sorunlar, çekme istekleri Wiki, Dönüm Noktaları, Etiketler, Sürüm notları ve yorumlar dahil olmak üzere bir projeyi GitHub'dan GitLab'a taşıma

GitLab Belgelerinde kapsamlı bir talimat vardır:

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

tl; dr

  • GitLab kullanıcılarına eşlemek istediğiniz GitHub kullanıcılarının şunlardan birine sahip olduğundan emin olun:

    • GitHub simgesini kullanarak oturum açan bir GitLab hesabı - veya -
    • GitHub kullanıcısının genel e-posta adresiyle eşleşen bir e-posta adresine sahip bir GitLab hesabı
  • Üst gezinme çubuğundan + simgesini tıklayın ve Yeni proje'yi seçin.

  • Projeyi içe aktar sekmesini seçin ve ardından GitHub'ı seçin.
  • GitHub depolarınızı listelemek için ilk düğmeyi seçin. GitLab uygulamasını yetkilendirmek için github.com'daki bir sayfaya yönlendirilirsiniz.
  • Gitlabhq'ı Yetkilendir'i tıklayın. GitLab'ın İçe Aktarma sayfasına geri yönlendirilirsiniz ve tüm GitHub depolarınız listelenir.
  • Hangi depoların içe aktarılacağını seçmeye devam edin.

Ancak ayrıntılar ve kancalar için lütfen GitLab Docs sayfasını okuyun !

(çok değil)


1

Gitlab bu özellikte biraz sorunlu. Projeniz herhangi bir büyükse, özel olarak sorun gidermeye çalışırken çok zaman kaybedebilirsiniz.

En iyi çözüm, oluşturma / içe aktarma aracını kullanmaktır, kullanıcı adınızı ve şifrenizi girmeyi unutmayın, aksi takdirde hiçbir şey içe aktarmaz.

Ekran görüntülerimi takip edin

görüntü açıklamasını buraya girin


0

Gitlab'de boş bir proje oluşturursunuz, ardından yerel terminalinizde şunlardan birini izleyin:

Mevcut bir klasörü itin

cd existing_folder
git init
git remote add origin git@gitlab.com:GITLABUSERNAME/YOURGITPROJECTNAME.git
git add .
git commit -m "Initial commit"
git push -u origin master

Mevcut bir Git deposunu aktarın

cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:GITLABUSERNAME/YOURGITPROJECTNAME.git
git push -u origin --all
git push -u origin --tags
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.