Git deposu nasıl çoğaltılır? (çatallamasız)


117

İki depom var ve birinin tamamını, ilkinden farklı erişim düzeylerine sahip diğer boş depoya kopyalamam gerekiyor. Kopya ve ana depo birbirine bağlanmamalıdır.

Git konusunda yeniyim ve birisi bana bu konuda yardımcı olabilirse harika olur.


5
emin değilim, ama sanırım onu ​​klonlayabilir ve sonra remote.origin'i yeni temsilcinize ayarlamak için git config remote.origin.url git: //new.url/proj.git kullanabilirsiniz.
Rufinus

ya az önce gönderdiğim bağlantı böyle bir şey yapıyor.
nbz

@rudinus Ben de bunu yaptım. Teşekkürler.
cowboybebop

Yanıtlar:


205

Bkz https://help.github.com/articles/duplicating-a-repository

Kısa versiyon:

Tam bir kopya oluşturmak için hem çıplak klon hem de ayna itme gerçekleştirmeniz gerekir:

mkdir foo; cd foo 
# move to a scratch dir

git clone --bare https://github.com/exampleuser/old-repository.git
# Make a bare clone of the repository

cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
# Mirror-push to the new repository

cd ..
rm -rf old-repository.git  
# Remove our temporary local repository

NOT: Yukarıdakiler herhangi bir uzak git repo ile sorunsuz çalışacaktır, talimatlar github'a özel değildir

Yukarıdakiler, deponun yeni bir uzak kopyasını oluşturur. Sonra onu çalışan makinenize kopyalayın.


2
Eski ve yeni Depolar aynı ada sahipse (aynı git URL'si değilse) ne olur? Ben de olduğu gibi bir Jeremy.gitbaşkasına Jeremy.git
klonluyorum

Bu tam olarak bir kopya olmayacak. Sorunlar aktarılmayacak.
Slam

Bu tarihi koruyor mu?
Thomas

@Thomas bunu yeni yaptım ve evet, tüm geçmişimi kopyada korudu. Yeni
depoya basıp

7
Bu cevabın GitHub ile çalışabilmesi için öncelikle GitHub'da yeni deponun oluşturulması gerekir.
Alex Holcombe

23

Git-copy'yi de kullanabilirsiniz .

Gem ile kurun,

gem install git-copy

Sonra

git copy https://github.com/exampleuser/old-repository.git \
    https://github.com/exampleuser/new-repository.git

1
İlk etapta gem'i nasıl kurarsınız? Bu, en sorunsuz çözüm gibi görünüyor. Upvoted!
saran3h

Genellikle bir Ruby kurulumunun parçasıdır. Ubuntu'da yapın sudo apt install ruby.
zarar

10

GitHub'a kopyalıyorsanız, bunu sizin yerinize yapmak için GitHub İçe Aktarıcı'yı kullanabilirsiniz. Orijinal depo, diğer sürüm kontrol sistemlerinden bile olabilir.


4
Bu mükemmel çalışıyor ve hatta geçmişi koruyor
John D

1
Katılıyorum. Bu yaklaşım çok daha sezgiseldir, tamamen Github GUI içinde yapılabilir ve bu kafa karıştırıcı komut satırı saçmalıklarının hiçbirini içermez. Adımlar: 1) GUI'de yeni depoyu oluşturun ancak "Bu depoyu bir README ile başlat" etiketli onay kutusunu tıklamayın Bunu yaptıktan sonra Github size yeni bir sayfa ve "etiketli bir seçenek sunacak"… veya başka bir depo. " Bu kadar!
Luke F.

5

Var olan bir dosyadaki dosyaların tümünü veya çoğunu kullanarak yeni bir depo oluşturmak istiyorsanız (yani, bir tür şablon olarak), en kolay yaklaşımın istenen isimle yeni bir depo oluşturmak olduğunu görüyorum, vb. masaüstünüze gidin, ardından istediğiniz dosya ve klasörleri ekleyin.

Tüm geçmişi vb. Almazsınız, ancak muhtemelen bu durumda bunu istemezsiniz.


-1

Terminal'i açın.

Deponun çıplak bir klonunu oluşturun.

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

Mirror-push to the new repository.

cd old-repository.git

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


Yaklaşımınızı denedim. Ve şu hata mesajını aldım:! [uzaktan reddedildi] ana -> ana (önceden alma kancası reddedildi) ve diğer birkaç benzer mesaj. Sonuncusu şuydu: hata: bazı referansları iletemedi Bunu nasıl düzeltebilirim?
LND
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.