Invia push / clone al nuovo server


127

Sto solo imparando Git e c'è qualcosa che non riesco a capire. Dopo aver creato e usato un repository git localmente sul mio Mac, posso inviarne una copia su un altro server da qualche altra parte? Sono dietro un firewall, quindi sfortunatamente non posso correre git clonedall'altra macchina.

Risposte:


137
  1. git remote add nome url
  2. git push ramo del nome

Esempio:

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

Consulta i documenti per git push: puoi impostare un telecomando come telecomando predefinito per un determinato ramo; in caso contrario, il nome originè speciale. Solo da git pushsolo farà lo stesso di questo git push origin branco (per qualunque ramo tu sia).


7
Per un effetto più ravvicinato come una "clonazione push" piuttosto che semplicemente un _branch_ : git push -u --allpossiamo ometterlo originpoiché è il nome predefinito assunto per push e -useguirà anche i rami remoti.
Cregox,

13
Dovrebbe essere sufficiente creare un repository vuoto vuoto sul server utilizzando git init --bare /foo/bar.gite quindi spingere lì quello locale (come in questa risposta). Non è necessario trasferire nulla con zip / tared sul server.
OderWat,

1
Seconding OderWat. Ad esempio, esegui 'git init --bare foo / bar.git' mentre sei collegato al telecomando (ad es. Git@github.com), quindi 'origine remota' avrà una destinazione in cui spingere. Per l'esempio di github, penso che potresti usare l'interfaccia web Repository / Aggiungi di github e quindi seguire il consiglio "Invia un repository esistente dalla riga di comando" che fornisce. Github consiglia a '-u' di causare un riferimento di tracciamento.
Dave X

Questo metodo può essere canonico, ma è ottuso e rende git meno utilizzabile. Mi piace un po 'di schifo, ma il cielo ha qualche problema con l'interfaccia utente.
Ross Rogers,

Mi sono preso la libertà di rimuovere il paragrafo "EDIT" che è stato aggiunto alla domanda originale, che faceva sembrare che questa procedura fosse discutibile. Non penso che lo sia, e probabilmente avrebbe dovuto essere comunque un commento anziché una modifica della domanda.
August Lilleaas,

75

Quello che potresti voler fare è prima di tutto, sul tuo computer locale, creare un clone nudo del repository

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

Ora, archivia la nuova directory repo.git usando tar / gzip o qualunque sia il tuo strumento di archiviazione preferito e quindi copia l'archivio sul server.

Annulla l'archiviazione del repository sul tuo server. Dovrai quindi impostare un telecomando sul tuo repository locale:

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

Sarai quindi in grado di eseguire il push e il pull dal repository remoto con:

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

4
Potresti spiegare il commento "non dimenticare il .git!"? Dov'è l'aggiunta di .git alla fine della cartella? Quando dovrei farlo? Solo una convention?
lumbric

5
".Git" è solo lo standard non ufficiale per identificare un repository bare git
Grant Limberg

3
Non sto seguendo questa idea ... questo non spezza l'intero scopo di configurare un server Git e usarlo effettivamente per "trasferire / copiare / mantenere le cose in sincronia / backup" piuttosto che zippare e usare qualche altro metodo?
Cregox,

1
Questo è esattamente ciò di cui avevo bisogno, perché il repository originale era su una rete che non aveva accesso alla rete in cui esisteva il server che volevo spingere. Questo mi ha permesso di mettere il repository su una scatola a cui era possibile accedere.
michaeltwofish,

3
@Cawas devi solo zippare / copiare / estrarre manualmente il repository una volta. dopo tutto ciò che serve è git push and pull.
sparebytes

9

Esistono molti modi per spostare i repository, git bundleè un buon modo se la disponibilità della rete è insufficiente. Poiché un repository Git è in realtà solo una directory piena di file, puoi "clonare" un repository creando una copia della .gitdirectory nel modo che preferisci.

Il modo più efficiente è utilizzare un repository esterno da qualche parte (utilizzare GitHub o configurare Gitosis ), quindi 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

Mi piace la semplicità della tua risposta, ma non sono sicuro che sia ciò di cui ho bisogno o meno. Ho un repository GIT esistente su GitHub e ora voglio anche inviare ai file live il nostro server Ubuntu (su cui è installato GIT). Puoi aggiungere alcuni commenti per rendere più chiaro il processo?
Dave Everitt,

1

Puoi inviare un ramo a un server remoto, ad esempio github . Dovresti prima fare la configurazione iniziale del progetto, quindi clonare il tuo progetto e:

git push <remote repo> <your branch>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.