2010-10-08 24 views
16

Tengo un repositorio de Git existente en mi máquina local. Me gustaría mover ese repositorio a mi servidor web, luego git clone en mi máquina local para verificar mi repositorio desde el servidor. Estoy planeando desarrollar en mi máquina local y llevar las actualizaciones al servidor. Puedo enviar ssh desde mi máquina local al servidor, pero no al revés. ¿Cómo debo ir sobre esto? Creo que git bundle debería usarse de alguna manera, aunque cuando intenté git clone mi paquete en mi servidor, recibí un mensaje de "advertencia: HEAD remoto se refiere a una referencia inexistente, no se puede realizar el pago". Mi máquina local ejecuta OS X, el servidor ejecuta Linux.Git: mover el repositorio existente de la PC al servidor, clonar desde el servidor

Respuesta

29

En el servidor Linux, en un nuevo directorio hacer:

git init --shared --bare 

A continuación, en el equipo local:

git remote add origin server:path/to/repo 
git push --all origin 

Después de eso, el servidor tendrá una copia completa del repositorio, y podrás empujar y tirar hacia y desde él. No es necesario verificar otro clon del servidor cuando ya tiene uno localmente.

+0

Al hacer 'git push origin master', aparece un error largo que comienza con" Total 0 (delta 0), reutilizado 0 (delta 0) remote: error: se niega a actualizar check out branch: refs/heads/maestro remoto: error: Por defecto, actualizando la rama actual en un repositorio no desnudo ". El único contenido de mis repositorios en el servidor Linux es "... git HEAD branches config description hooks info objects refs", que es lo que creó el comando 'git init --shared --bare'. Estoy usando git 1.7.1.1 en ambas computadoras. –

+0

¡Whoop, no importa! Lo tengo para trabajar ahora. En realidad, no había creado un nuevo directorio en el servidor Linux, solo había eliminado lo que pensaba que era todo su contenido antes de ejecutar el comando 'git init ...'. Creando un nuevo directorio, 'git init ...' ing it, cambiando para usar ese origen desde mis repositorios locales, y luego presionando funcionó. –

+0

Esto funciona bien en principio, pero necesitaba algunos pasos adicionales para hacerlo funcionar, porque mi servidor ejecuta un puerto ssh no estándar: en OS X. Comencé instalando ssh-askpass (https://github.com/ markcarver/mac-ssh-askpass), luego tuve que configurar el puerto en ~/.ssh/config (vea http://stackoverflow.com/a/5738592/217953), usando la URL de estilo SCP. – xgretsch

2

¿Qué tal esto:

local> cd my_repo.git 
local> git remote add origin [email protected]:/path/to/my_repo.git 
local> git config branch.master.remote origin 
local> git config branch.master.merge refs/heads/master 
local> git push origin master 

que enviará los datos de tu repositorio local a su servidor. Luego haga esto:

local> cd .. 
local> git clone [email protected]:/path/to/my_repo.git my_repo2.git 

Luego lo clonará desde el servidor. Cuando esté satisfecho, puede deshacerse del repositorio original y posiblemente renombrar el segundo.

9

En lugar de "git push origin master", use "git push --all origin" para que se mueva en todas las ramas y no solo en la rama principal.

Cuestiones relacionadas