2009-09-09 14 views
120

Sto solo imparando git e c'è qualcosa che non riesco a capire. Dopo aver creato e utilizzato un repository git localmente sul mio Mac, posso spingere una copia su un altro server da qualche altra parte? Sono dietro un firewall, quindi purtroppo non posso eseguire git clone dall'altra macchina.git push/clone al nuovo server

risposta

124
  1. git remote addnomeurl
  2. git pushnomeramo

Esempio :

git remote add origin [email protected]:foo/bar.git 
git push origin master 

Vedere i documenti per git push - è possibile impostare un telecomando come remoto predefinito per un determinato ramo; se non lo fai, il nome origin è speciale. Solo lo git push da solo farà lo stesso di git push originthisbranch (per qualsiasi ramo in cui ti trovi).

+6

Per una più stretta effetto come ** "push cloning" ** piuttosto che solo * pushinh a _branch_ *: ['git push -u --all'] (http://linux.die.net/man/1/git-push) possiamo omettere 'origin' dato che è il nome presunto predefinito per la spinta e' -u' traccerà anche i rami remoti. – cregox

+9

Dovrebbe essere sufficiente creare un repository vuoto vuoto sul server usando 'git init --bare/foo/bar.git' e poi spingere quello locale lì (come in questa risposta). Non è necessario trasferire nulla con zip/tara al server. – OderWat

+1

Seconding OderWat. Per l'esempio, fai 'git init --bare foo/bar.git' mentre sei loggato nel remoto (cioè [email protected]), quindi 'origine remota' avrà una destinazione da inserire.Per l'esempio github, penso che potresti usare l'interfaccia web di Repository/Add di github e poi seguire il consiglio "Spingi un repository esistente dalla riga di comando" che fornisce. Github consiglia un '-u' per causare un riferimento di tracciamento. –

1

È possibile trasferire un ramo su un server remoto, ad esempio github. Si dovrebbe prima fare la configurazione iniziale del progetto, quindi clonare il vostro progetto e:

git push <remote repo> <your branch> 
9

Ci sono molti modi per spostare i repository in giro, git bundle è un modo carino se la disponibilità della rete è insufficiente. Poiché un repository Git è in realtà solo una directory piena di file, è possibile "clonare" un repository creando una copia della directory .git in qualsiasi modo si addice alle proprie esigenze.

Il modo più efficace è utilizzare un repository esterno da qualche parte (utilizzare GitHub o impostare Gitosis) e quindi git push.

74

Che cosa si può desiderare di fare è prima, sul computer locale, fare una nuda clone del repository

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

Ora, archiviare la nuova directory repo.git usando tar/gzip o qualunque sia il vostro preferito strumento di archiviazione è e quindi copiare l'archivio sul server.

Disarchiviazione del repository sul server. Avrete quindi bisogno di impostare un remoto sul repository locale:

git remote add repo-name [email protected]:/path/to/repo.git #this assumes you're using SSH 

Sarete quindi in grado di spingere e tirare a dal repo remoto con:

git push repo-name branch-name 
git pull repo-name branch-name 
+4

Puoi spiegare il commento "non dimenticare il .git!"? Dov'è il punto nell'aggiunta di .git alla fine della cartella? Quando dovrei farlo? Solo una convenzione? – lumbric

+5

Il ".git" è solo lo standard non ufficiale per identificare un repository git nudo –

+3

Non sto seguendo questa idea ... non rompe l'intero scopo di creare un server git e in realtà * usarlo * su " trasferire/copiare/mantenere le cose in sincronia/backup "piuttosto che * zippare * e utilizzare qualche altro metodo? – cregox

4
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://[email protected]<hostorip>:/home/ec2-user/dev/test 
local> git push aws master 
Problemi correlati