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.

Jacob
fuente

Respuestas:

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

Ejemplo:

git remote add origin [email protected]: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).

hobbs
fuente
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, [email protected]), 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
Grant Limberg
fuente
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.

Greg Hewgill
fuente
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
jazzed
fuente
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>
Cesar
fuente