2013-03-17 15 views
11

sto cercando di utilizzare git per implementare il mio codice locale nel mio server remoto.come copiare un repository locale al server remoto utilizzando git?

Così qui è quello che ho fatto nella mia locale miositoweb cartella /:

git init 
git add . 
git commit -m "Initial commit" 

Poi, sul mio server web :

mkdir ~/public_html/myrepo.git 
cd myrepo.git 
git init --bare 

Poi, sul mio locale Cartella mywebsite /:

git remote add remote_mywebsite ssh://[email protected]:port/~/public_html/myrepo.git 
git push remote_mywebsite master 

che ha dato questo risultato:

Counting objects: 89, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (74/74), done. 
Writing objects: 100% (89/89), 61.94 KiB, done. 
Total 89 (delta 2), reused 0 (delta 0) 
To ssh://[email protected]:8943/~/public_html/myrepo.git 
* [new branch]  master -> master 

git pull remote_mywebsite 

Ma quando accedo al mio server web, nel myrepo.git, sto ancora avere questi file e cartelle

./ 
../ 
branches/ 
config 
description 
HEAD 
hooks/ 
info/ 
objects/ 
refs/ 

e io don' t recuperare i file e le cartelle che ho nella mia cartella mywebsite locale.

Come potrei recuperare il mio codice nella cartella myrepo.git remota? Ho fatto qualcosa di male ?

Grazie mille per il vostro aiuto!

+1

Non hai i file perché è stato creato un repository nudo. Un repository nudo contiene solo il database degli oggetti. Per recuperare i tuoi file sul server, crea un clone del repository nudo. – knittl

+0

Puoi trovare lo stesso database degli oggetti nel tuo repository locale nella cartella '.git' (nascosta) – knittl

risposta

16

Hai creato un repository remoto, senza una directory di lavoro (che è lo scopo dell'opzione --bare). Quello che devi fare è clonare quel repository remoto nella directory del tuo sito web. Io uso lo stesso approccio; Ho una directory ~/git con uno o più repository git nude e poi cloni per uno o più siti web. I suoi passi potrebbero essere:

# locate your bare repository in a 'git' directory 
remote$ mkdir ~/git; mkdir ~/git/mywebsite.git; cd ~/git/mywebsite.git; git init --bare 

# set this up as your remote 
local$ git remote add origin ssh:.../git/mywebsite.git 
local$ git push origin ... 

# on the remote, clone into your working website 
remote$ cd ~/public_html 
remote$ git clone ~/git/mywebsite.git mywebsite 

Con questo approccio si può sviluppare a livello locale, a spingere a distanza tutte le volte che ti piace e poi, quando si è pronti, git pull sul telecomando per aggiornare in realtà il sito web.

+0

Grazie, ho quasi rinunciato a cercare questa risposta! Qualcuno potrebbe spiegare la logica dietro questo però? Perché il nuovo repository di file è clonato dal repository remoto remoto? Semmai mi sembra di avere più di una somiglianza con il repository locale. –

+0

@JohnBananas Dovresti leggere un libro su Git – hexicle

0

Questo sarà rispondere alla tua domanda

http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/

In repository nudo non è necessario disporre di fonte.

+0

Poiché i collegamenti non sono permanenti, sarebbe utile se fosse possibile copiare i dettagli rilevanti, come i comandi in questa risposta. Sarei felice di votare la tua risposta se avesse qualche dettaglio in più! Una risposta può essere supportata da un collegamento ma dovrebbe essere in grado di stare da sola senza di essa. – Amicable

Problemi correlati