2009-09-09 8 views
120

Estoy aprendiendo git y hay algo que no puedo resolver. Después de crear y usar un repositorio git localmente en mi Mac, ¿puedo enviar una copia a otro servidor en otro lugar? Estoy detrás de un firewall, así que desafortunadamente no puedo ejecutar git clone desde la otra máquina.git push/clone al nuevo servidor

Respuesta

124
  1. git remote addnombreurl
  2. git pushnombrerama

Ejemplo :

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

Consulte los documentos para git push - puede establecer un control remoto como control remoto predeterminado para una bifurcación determinada; si no lo hace, el nombre origin es especial. Solo git push solo hará lo mismo que git push originthisbranch (para cualquier rama en la que se encuentre).

+6

Para una más cerca efecto como ** "clonación a presión" ** en lugar de simplemente * pushinh a _branch_ *: ['git push -u --all'] (http://linux.die.net/man/1/git-push) podemos omitir 'origen' ya que es el nombre supuesto predeterminado para presionar y' -u' también rastreará las ramas remotas. – cregox

+9

Debería ser suficiente para crear un repositorio vacío vacío en el servidor usando 'git init --bare/foo/bar.git' y luego presione el local allí (como en esta respuesta). No es necesario transferir nada con zip/tared al servidor. – OderWat

+1

Secundaria OderWat. Por ejemplo, ejecute 'git init --bare foo/bar.git' mientras está conectado al control remoto (es decir, [email protected]), luego el 'origen remoto' tendrá un destino al que presionar.Para el ejemplo de github, creo que podrías usar la interfaz de Repository/Add web de github y luego seguir el consejo "Push an existing repository from the command line" que proporciona. Github aconseja un '-u' para causar una referencia de seguimiento. –

1

Puede empujar una bifurcación a un servidor remoto, digamos github. Primero tendría que hacer la configuración inicial del proyecto, a continuación, clonar su proyecto y:

git push <remote repo> <your branch> 
9

Hay muchas maneras de mover repositorios, git bundle es una buena manera si no tiene suficiente disponibilidad de red. Dado que un repositorio de Git es realmente solo un directorio lleno de archivos, puede "clonar" un repositorio haciendo una copia del directorio .git de la manera que más le convenga.

La forma más eficiente es usar un repositorio externo en alguna parte (use GitHub o configure Gitosis), y luego git push.

74

Lo que es posible que desee hacer es en primer lugar, en el equipo local, hacer un clon del repositorio desnudo

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

Ahora, archivar el nuevo directorio de repo.git usando tar/gzip o lo que sea su favorito herramienta de archivado es y luego copiar el archivo en el servidor.

Desarchive el repositorio en su servidor. A continuación, debe configurar un mando a distancia en su repositorio local:

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

A continuación, será capaz de empujar y tirar a partir del repositorio remoto con:

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

¿Podría explicar el comentario "no olvides el .git!"? ¿Dónde está el punto de agregar .git al final de la carpeta? ¿Cuándo debería hacer esto? ¿Una convención solamente? – lumbric

+5

El ".git" es solo el estándar no oficial para identificar un repo de git al descubierto –

+3

No estoy siguiendo esta idea ... ¿esto no rompe el propósito de configurar un servidor de git y en realidad * usarlo * para " transferir/copiar/mantener las cosas en sincronía/copia de seguridad "en lugar de * comprimir * y usar algún otro método? – 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 
Cuestiones relacionadas