İndirdiğim bir sunucum var. Göç etmek için bıraktığım tek şey depom. Bu sunucu, projelerimden birinin kaynağı (ana) olarak listeleniyor. Tarihi korumak için veri havuzunu taşımanın doğru yolu nedir?
İndirdiğim bir sunucum var. Göç etmek için bıraktığım tek şey depom. Bu sunucu, projelerimden birinin kaynağı (ana) olarak listeleniyor. Tarihi korumak için veri havuzunu taşımanın doğru yolu nedir?
Yanıtlar:
Yeni repo konumunu eklemek için,
git remote add new_repo_name new_repo_url
Ardından içeriği yeni konuma itin
git push new_repo_name master
Sonunda eskisini kaldırın
git remote rm origin
Bundan sonra bdonlan'ın söylediklerini yapabilir ve new_repo_name kökeni değiştirmek için git / config dosyasını düzenleyebilirsiniz. Başlangıç noktasını (orijinal uzak depo) kaldırmazsanız, yalnızca yeni repodaki değişiklikleri
git push new_repo_name master
git push -u new_repo_name --all.
git remote rename new_repo_name origin
Tüm dalları ve etiketleri taşımak istiyorsanız aşağıdaki komutları kullanmalısınız:
git clone --mirror [oldUrl]
eski repoyu tüm şubelerle klonlamak
cd the_repo
git remote add remoteName newRepoUrl
yeni bir uzaktan kumanda kurmak
git push -f --tags remoteName refs/heads/*:refs/heads/*
tüm referansları ref / başların altına itmek (muhtemelen istediğiniz şeydir)
--tagsve refs/heads/*:refs/heads/*uyumlu değil --mirror. stackoverflow.com/a/26552740/1484831 iyi çalıştı.
refs/heads/refs/headsgit push -f --tags remoteName refs/heads/*:refs/heads/*git push remoteName --mirror
pushAyrıca destekler --mirror. git clone --mirror; cd repo; git push --mirror new_remotehile yapmalı
Bu benim için kusursuz çalıştı .
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin
Bununla birlikte, bu durumun mevcut deponuzun bir aynasını oluşturduğunu ve sonra bunu yeni konuma ittiğini belirtmeliyim. Bu nedenle, büyük depolar veya yavaş bağlantılar için biraz zaman alabilir .
git push --mirror originüzerinde -f.
Kopyalayın. Gerçekten bu kadar basit. :)
İstemci tarafında, uzaktan kumandalarınızı gerektiği gibi yeni URL'ye yönlendirmek için istemcinin yerel deposundaki .git / config dosyasını düzenleyin.
Bu, diğer cevapların bazı bölümlerinde yapılır.
git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new
--mirror
git init --bare
Sadece basit bir talimatlar listesi ile başkalarının söylediklerini yeniden gönderiyorum.
Depoyu taşıyın: Yeni sunucuya, cdşimdi depoyu tutmak istediğiniz ana dizine giriş yapın rsyncve eski sunucudan kopyalamak için kullanın :
new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git .
İstemcilerin yeni havuzu göstermesini sağlayın: Şimdi havuzu kullanan her istemcide, işaretçiyi eski başlangıç noktasına kaldırın ve yenisine ekleyin.
client> git remote rm origin
client> git remote add origin user@new.server.com:path/to/repository.git
git remote set-url origin user@new.server.com:path/to/repository.git
GitHub'daki şu tarife bir göz atın: https://help.github.com/articles/importing-an-external-git-repository
Keşfetmeden önce birkaç yöntem denedim git push --mirror.
Bir cazibe gibi çalıştı!
git clone --mirror ..., git remote add ...,git push --mirror ...
Orada tüm şubeleriyle bir repo taşımak için BitBucket'teki talimatları izledim. İşte #karakteri izleyen açıklamalarla birlikte adımlar :
cd path/to/local/repo
git remote remove origin # to get rid of the old setting, this was not in the BitBucket instructions
git remote add origin ssh://git@bitbucket.org/<username>/<newrepo> # modify URL as needed
git push -u origin --all # pushes _ALL_ branches in one go
git push -u origin --tags # pushes _ALL_ tags in one go
Benim için iyi çalıştı.
Bu bir çeşidi bu cevap şu anda önerdiği, gitlab "taşınamayacak" başka bir sunucudan bir git deposuna.
Eski projenizin çağrıldığını existing_repo, bir existing_repoklasörde saklandığını varsayalım .
Yeni sunucunuzda bir repo oluşturun. Bu yeni projenin URL'siningit@newserver:newproject.git
Bir komut satırı arabirimi açın ve aşağıdakileri girin:
cd existing_repo
git remote rename origin old-origin
git remote add origin git@newserver:newproject.git
git push -u origin --all
git push -u origin --tags
Bu yaklaşımın avantajları, eski sunucunuza karşılık gelen dalı silmemenizdir.
Aşağıdaki komutu kullanabilirsiniz:
git remote set-url --push origin new_repo_url
Http://gitref.org/remotes/ adresinden bir örnek
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/github/git-reference.git (push)
$ git remote set-url --push origin git://github.com/pjhyett/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
Şu kadar basit olmalı:
git remote set-url origin git://new.url.here
Bu şekilde originyeni repo'nuzun adını korursunuz - daha sonra diğer repolara ayrıntılı olarak eski repoya itin. Yalnız çalıştığınızı ve içindeki tüm rüzgârınızla yansıtmak istediğiniz yerel bir repoya sahip olduğunuzu varsayarsak, (yerel repodan da)
git push origin --mirror # origin points to your new repo
ama "git push --mirror" veri havuzumu yedeklemek için yeterli mi? ( --mirrortoplamda bir kez kullanmayın ).
Bir kaynaktan diğerine geçmek ve aynı zamanda yerel makinenizde mevcut kaynağınızın yedeğini tutmak istiyorsanız şu adımları kullanabilirsiniz:
Şimdi klasörde
git remote get-url origin
Yukarıdaki komut, geçerli uzak kaynak url'yi verir ve başlangıç adımını son adımda geri ayarlamak için yararlıdır
git remote set-url origin git@github.newlocation:folder/newrepo.git
Yukarıdaki komut uzak kaynağı yeni konuma ayarlar
git push --set-upstream origin develop
Yukarıdaki komut, geçerli etkin yerel dalı, branchname geliştirmesi ile uzaktan kumandaya iter. Tabii ki tüm tarih korunur git gibi tüm tarih de itilir.
git remote set-url origin <original old origin>
Yukarıdaki komut, uzak kökeni geçerli kökeninize geri döndürür: Bunu, mevcut klasörünüzde olduğunuz için ve muhtemelen geçerli yerel klasör adınızı, repoyu klonlamak için oluşturacağınız yeni klasörle karıştırmak istemediğinizden Sadece ittiniz.
Bu yardımcı olur umarım,
Bir #git deposunu bir sunucudan yenisine taşımak istiyorsanız, bunu şu şekilde yapabilirsiniz:
git clone OLD_REPOSITORY_PATH
cd OLD_REPOSITORY_DIR
git remote add NEW_REPOSITORY_ALIAS NEW_REPOSITORY_PATH
#check out all remote branches
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
git push --mirror NEW_REPOSITORY_PATH
git push NEW_REPOSITORY_ALIAS --tags
Eski depodaki tüm uzak dallar ve etiketler yeni depoya kopyalanacaktır.
Bu komutu tek başına çalıştırmak:
git push NEW_REPOSITORY_ALIAS
yalnızca bir ana kolu (yalnızca izleme dalları) yeni depoya kopyalar.