Git yeni sunucuya itme / klonlama


127

Sadece Git'i öğreniyorum ve çözemediğim bir şey var. Mac'imde yerel olarak bir git deposu oluşturup kullandıktan sonra, bir kopyasını başka bir yerdeki başka bir sunucuya gönderebilir miyim? Bir güvenlik duvarının arkasındayım, bu yüzden maalesef git clonediğer makineden koşamıyorum.

Yanıtlar:


137
  1. git remote add ad url'si
  2. git push isim dalı

Misal:

git remote add origin git@github.com:foo/bar.git
git push origin master

Belgelerine bakınız git push- uzaktan verilen bir şube için varsayılan olarak uzaktan ayarlayabilirsiniz; eğer yapmazsan, isim originözeldir. Sadece git pushtek başına bu git push origin dalla aynı şeyi yapacaktır (hangi dalda olursanız olun).


7
Bir şekilde daha yakından etki için "itme klonlama" yerine sadece daha bir _branch_ pushinh : git push -u --allbiz atlayabilirsiniz originvarsayılan itmek için adını almıştır var gibi -uaynı zamanda uzak dalları izleyecektir.
cregox

13
Kullanarak sunucuda boş bir çıplak depo oluşturmak git init --bare /foo/bar.gitve ardından yerel deponuzu oraya itmek yeterli olmalıdır (bu cevapta olduğu gibi). Sunucuya sıkıştırılmış / daraltılmış herhangi bir şey aktarmanıza gerek yoktur.
OderWat

1
OderWat Seconding. Örneğin, uzaktaki oturumunuz açıkken 'git init --bare foo / bar.git' yapın (yani git@github.com), ardından 'uzak kaynak'ın gönderilecek bir hedefi olacaktır. Github örneği için, github'ın Repository / Add web arayüzünü kullanabileceğinizi ve ardından sağladığı "Komut satırından mevcut bir depoyu itin" tavsiyesini uygulayabileceğinizi düşünüyorum. Github, bir izleme referansına neden olmak için '-u' önerir.
Dave X

Bu yöntem kurallara uygun olabilir, ancak geniş ve git'i daha az kullanışlı hale getiriyor. Beni biraz seviyorum, ama iyi cennetin bazı kullanıcı arayüzü sorunları var ..
Ross Rogers

Orijinal soruya eklenen ve bu prosedürün şüpheli gibi görünmesini sağlayan "DÜZENLE" paragrafını kaldırma özgürlüğünü aldım. Öyle olduğunu sanmıyorum ve zaten soru düzenlemesi yerine muhtemelen bir yorum olmalıydı.
Ağustos Lilleaas

75

Yapmak isteyebileceğiniz şey ilk önce yerel makinenizde deponun çıplak bir klonunu yapmaktır.

git clone --bare /path/to/repo /path/to/bare/repo.git  # don't forget the .git!

Şimdi, tar / gzip veya en sevdiğiniz arşivleme aracını kullanarak yeni repo.git dizinini arşivleyin ve ardından arşivi sunucuya kopyalayın.

Depoyu sunucunuzda arşivden çıkarın. Daha sonra yerel deponuzda bir uzaktan kumanda kurmanız gerekir:

git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH

Daha sonra aşağıdakilerle uzak depoya itip çekebileceksiniz:

git push repo-name branch-name
git pull repo-name branch-name

4
".Git'i unutma!" Yorumunu açıklayabilir misin? Klasörün sonuna .git eklemenin anlamı nedir? Bunu ne zaman yapmalıyım? Sadece bir kongre mi?
lumbric

5
".Git" çıplak bir git deposunu tanımlamak için resmi olmayan bir standarttır
Grant Limberg

3
Bu fikri takip etmiyorum ... bu, bir git sunucusu kurma ve onu sıkıştırmak ve başka bir yöntem kullanmak yerine "işleri senkronize etmek / yedeklemek" için kullanmak amacını tamamen bozmaz mı?
cregox

1
Bu tam olarak ihtiyacım olan şeydi, çünkü orijinal depo, göndermek istediğim sunucunun var olduğu ağa erişimi olmayan bir ağdaydı. Bu, depoyu erişimi olan bir kutuya koymamı sağladı.
michaeltwofish

3
@Cawas, depoyu yalnızca bir kez manuel olarak zip / kopyalama / ayıklamanız gerekir. bundan sonra ihtiyacınız olan tek şey git push and pull.
sparebytes

9

Depoları dolaşmanın birçok yolu vardır, git bundleyetersiz ağ kullanılabilirliğiniz varsa bu iyi bir yoldur. Git deposu gerçekten sadece dosyalarla dolu bir dizin olduğundan, .gitsize en uygun şekilde dizinin bir kopyasını oluşturarak bir depoyu "klonlayabilirsiniz" .

En etkili yolu (kullanımı, dış veri havuzu bir yere kullanmaktır GitHub yukarı ya da set Gitosis sonra) ve git push.


7
remote server> cd /home/ec2-user
remote server> git init --bare --shared  test
add ssh pub key to remote server
local> git remote add aws ssh://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master

Cevabınızın basitliğini beğendim ama ihtiyacım olup olmadığından emin değilim. GitHub'da mevcut bir GIT depom var ve şimdi Ubuntu sunucumuzun (GIT kurulu olan) canlı dosyalara aktarılmasını istiyorum. Süreci daha net hale getirmek için bazı yorumlar ekleyebilir misiniz?
Dave Everitt

1

Uzaktaki bir sunucuya bir dalı gönderebilirsiniz, örneğin github . Önce ilk proje kurulumunu yapmanız, ardından projenizi klonlamanız ve:

git push <remote repo> <your branch>
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.