¿Cómo crear un repositorio Git remoto a partir de uno local?


Tengo un repositorio Git local. Me gustaría hacerlo disponible en un servidor remoto habilitado para ssh. ¿Cómo hago esto?

Author: Habeeb Perwad, 2011-07-11

6 answers

Creo que haces un repositorio desnudo en el lado remoto, git init --bare, agrega el lado remoto como el rastreador push/pull para tu repositorio local (git remote add origin URL), y luego localmente solo dices git push origin master. Ahora cualquier otro repositorio puede pull desde el repositorio remoto.

 213
Author: Kerrek SB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-03 09:52:57

Para configurar inicialmente cualquier servidor Git, debe exportar un repositorio existente a un nuevo repositorio desnudo, un repositorio que no contenga un directorio de trabajo. Esto es generalmente sencillo de hacer. Para clonar su repositorio para crear un nuevo repositorio desnudo, ejecute el comando clonar con la opción --bare. Por convención, los directorios del repositorio desnudo terminan en .git, así:

$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/

Este comando toma el repositorio Git por sí mismo, sin un directorio, y crea un directorio específicamente para él solo.

Ahora que tiene una copia desnuda de su repositorio, todo lo que necesita hacer es colocarlo en un servidor y configurar sus protocolos. Supongamos que ha configurado un servidor llamado git.example.com al que tiene acceso SSH, y desea almacenar todos sus repositorios Git bajo el directorio /opt/git. Usted puede configurar su nuevo repositorio copiando su repositorio desnudo sobre:

$ scp -r my_project.git [email protected]:/opt/git

En este punto, otros usuarios que tienen acceso SSH a la misma el servidor que tiene acceso de lectura al directorio /opt/git puede clonar su repositorio ejecutando

$ git clone [email protected]:/opt/git/my_project.git

Si un usuario SSHS en un servidor y tiene acceso de escritura al directorio /opt/git/my_project.git, también tendrá acceso de inserción automáticamente. Git agregará automáticamente permisos de escritura de grupo a un repositorio correctamente si ejecuta el comando git init con la opción --shared.

$ ssh [email protected]
$ cd /opt/git/my_project.git
$ git init --bare --shared

Es muy fácil tomar un repositorio Git, crear una versión desnuda, y colocarlo en un servidor al que usted y su los colaboradores tienen acceso SSH. Ahora está listo para colaborar en el mismo proyecto.

 60
Author: Binoy Babu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-08 04:37:53

Una nota para las personas que crearon la copia local en Windows y desean crear un repositorio remoto correspondiente en un sistema de línea Unix, donde los archivos de texto obtienen finales LF en clones posteriores de desarrolladores en sistemas Unix, pero finales CRLF en Windows.

Si creó su repositorio de Windows antes de configurar la traducción de final de línea, entonces tiene un problema. La configuración predeterminada de Git no es traducción, por lo que su conjunto de trabajo utiliza CRLF pero su repositorio (es decir, los datos almacenados bajo .git) también ha guardado los archivos como CRLF.

Cuando se empuja al control remoto, los archivos guardados se copian tal cual, no se produce ninguna traducción de final de línea. (La traducción de fin de línea ocurre cuando los archivos se comprometen a un repositorio, no cuando se empujan repositorios). Terminas con CRLF en tu repositorio tipo Unix, que no es lo que quieres.

Para obtener LF en el repositorio remoto, primero debe asegurarse de que LF esté en el repositorio local, al volver a normalizar su Windows repository . Esto no tendrá ningún efecto visible en su conjunto de trabajo de Windows, que todavía tiene finales CRLF, sin embargo, cuando se presiona a remoto, el remoto obtendrá LF correctamente.

No estoy seguro de si hay una manera fácil de saber qué finales de línea tiene en su repositorio de Windows - supongo que podría probarlo configurando core.autocrlf = false y luego clonar (si el repositorio tiene finales LF, el clon también tendrá LF).

 7
Author: user1804620,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-28 00:12:24

Necesita crear un directorio en un servidor remoto. Luego use el comando "git init" para configurarlo como un repositorio. Esto debe hacerse para cada nuevo proyecto que tenga (cada nueva carpeta)

Asumiendo que ya has configurado y usado git usando claves ssh, escribí un pequeño script Python, que cuando se ejecuta desde un directorio de trabajo configurará un remoto e inicializará el directorio como un repositorio git. Por supuesto, tendrá que editar el script (solo una vez) para indicarle el servidor y la ruta raíz para todos repositorio.

Marque aquí - https://github.com/skbobade/ocgi

 2
Author: Sam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-22 17:24:55

Un repositorio remoto es generalmente un repositorio desnudo - un repositorio Git eso no tiene directorio de trabajo. Porque el repositorio solo se usa como un punto de colaboración, no hay razón para tener una instantánea comprobada en disco; son solo los datos de Git. En los términos más simples, un desnudo el repositorio es el contenido de tu proyecto .directorio git y nada más.

Puedes crear un repositorio git desnudo con el siguiente código:

$ git clone --bare /path/to/project project.git

Una opción para tener un el repositorio git remoto está utilizando el protocolo SSH:

Un protocolo de transporte común para Git cuando el auto-alojamiento es sobre SSH. Esto se debe a que el acceso SSH a los servidores ya está configurado en la mayoría de lugares - y si no lo es, es fácil de hacer. SSH es también un protocolo de red autenticado y, debido a que es ubicuo, es generalmente fácil de configurar y usar.

Para clonar un repositorio Git sobre SSH, puede especificar una URL ssh:// así:

$ git clone ssh://[user@]server/project.git

O puede utilizar el sintaxis similar a scp más corta para el protocolo SSH:

$ git clone [user@]server:project.git

En ambos casos anteriores, si no especifica el nombre de usuario opcional, Git asume el usuario con el que estás conectado actualmente.

Los Pros

Las ventajas de usar SSH son muchas. Primero, SSH es relativamente fácil de configurar los demonios up-SSH son comunes, muchos administradores de red tienen experiencia con ellos, y muchas distribuciones de SO se configuran con ellos o tienen herramientas para gestionarlas. A continuación, el acceso a través de SSH es seguro-todos los datos la transferencia está encriptada y autenticada. Por último, como el HTTPS, Git y Protocolos locales, SSH es eficiente, haciendo los datos tan compactos como posible antes de transferirlo.

Los Contras

El aspecto negativo de SSH es que no admite el acceso anónimo a tu repositorio Git. Si estás usando SSH, las personas deben tener SSH acceso a su máquina, incluso en una capacidad de solo lectura, que no hacer que SSH sea propicio para proyectos de código abierto para lo cual la gente podría simplemente desea clonar su repositorio para examinarlo. Si lo estás usando solo dentro de su red corporativa, SSH puede ser el único protocolo que necesito lidiar con eso. Si desea permitir el acceso anónimo de solo lectura a tus proyectos y también quieres usar SSH, tendrás que configurar SSH para tú para empujar pero algo más para que otros lo busquen.

Para obtener más información, consulte la referencia: Git en el Servidor-Los Protocolos

 1
Author: Amirhossein72,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-16 15:08:14

Normalmente puedes configurar un repositorio de git simplemente usando el comando init

git init

En su caso, ya hay un repositorio en un control remoto disponible. Depende de cómo acceda a su repositorio remoto (con nombre de usuario dentro de la url o una clave ssh que maneja la verificación ) use solo el comando clone:

git clone git@[my.url.com]:[git-repo-name].git

También hay otras formas de clonar el repositorio. De esta manera lo llamará si tiene una configuración de clave ssh en su máquina que verifica al extraer su repositorio. Hay otras combinaciones de la url si desea incluir su contraseña y nombre de usuario dentro para iniciar sesión en su repositorio remoto.

 -3
Author: Alex Cio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-12 08:15:10