Git push / clone al nuevo servidor


127

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 correr git clonedesde la otra máquina.

Respuestas:


137
  1. git remote add nombre url
  2. git push rama de nombre

Ejemplo:

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

Consulte los documentos para git push: puede configurar un control remoto como el control remoto predeterminado para una rama determinada; si no lo haces, el nombre origines especial. Solo git pushsolo hará lo mismo que esta git push origin rama (para cualquier rama en la que se encuentre).


77
Para un efecto más cercano como "clonación push" en lugar de simplemente presionar un _branch_ : git push -u --allpodemos omitirlo originya que es el nombre supuesto predeterminado para empujar y -utambién rastreará las ramas remotas.
cregox

13
Debería ser suficiente crear un repositorio vacío vacío en el servidor usando git init --bare /foo/bar.gity luego empujar su local allí (como en esta respuesta). No necesita transferir nada con el archivo comprimido / tarado al servidor.
OderWat

1
Secundando OderWat. Para el ejemplo, haga el 'git init --bare foo / bar.git' mientras está conectado al control remoto (es decir, git@github.com), entonces el 'origen remoto' tendrá un destino en el que ingresar. Para el ejemplo de github, creo que podría usar el repositorio de github / Agregar interfaz web y luego seguir el consejo "Proporcionar un repositorio existente desde la línea de comandos" que proporciona. Github aconseja una '-u' para causar una referencia de seguimiento.
Dave X

Este método puede ser canónico, pero es obtuso y hace que git sea menos usable. Me encanta un poco de git, pero los buenos cielos ¿tiene algunos problemas de interfaz de usuario ..
Ross Rogers

Me tomé la libertad de eliminar el párrafo "EDITAR" que se agregó a la pregunta original, que parecía que este procedimiento era cuestionable. No creo que lo sea, y probablemente debería haber sido un comentario en lugar de una edición de preguntas de todos modos.
August Lilleaas

75

Lo que puede hacer es primero, en su máquina local, hacer un clon del repositorio

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

Ahora, archive el nuevo directorio repo.git usando tar / gzip o cualquiera que sea su herramienta de archivo favorita y luego copie el archivo en el servidor.

Desarchiva el repositorio en tu servidor. Luego deberá configurar un control remoto en su repositorio local:

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

Entonces podrá empujar y extraer del repositorio remoto con:

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

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

55
El ".git" es solo el estándar no oficial para identificar un repositorio de git desnudo
Grant Limberg

3
No estoy siguiendo esta idea ... ¿esto no rompe todo el propósito de configurar un servidor git y realmente usarlo para "transferir / copiar / mantener las cosas sincronizadas / copia de seguridad" en lugar de comprimir y usar algún otro método?
cregox

1
Esto es exactamente lo que necesitaba, porque el repositorio original estaba en una red que no tenía acceso a la red donde existía el servidor que quería empujar. Esto me permitió poner el repositorio en una caja que tenía acceso.
michaeltwofish

3
@Cawas solo tiene que comprimir / copiar / extraer manualmente el repositorio una vez. después de eso, todo lo que necesitas es git push and pull.
sparebytes

9

Hay muchas maneras de mover los repositorios, git bundlees una buena manera si tiene una disponibilidad de red insuficiente. Dado que un repositorio de Git es realmente un directorio lleno de archivos, puede "clonar" un repositorio haciendo una copia del .gitdirectorio de la forma 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.


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

Me gusta la simplicidad de su respuesta, pero no estoy seguro de si es lo que necesito o no. Tengo un repositorio GIT existente en GitHub, y ahora también quiero enviar a los archivos en vivo nuestro servidor Ubuntu (que tiene instalado GIT). ¿Puedes agregar algunos comentarios para aclarar el proceso?
Dave Everitt

1

Puede empujar una rama a un servidor remoto, por ejemplo, github . Primero tendría que hacer la configuración inicial del proyecto, luego clonar su proyecto y:

git push <remote repo> <your branch>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.