Tengo un proyecto en el que creé un repositorio git:
$ cd myproject
$ git init
$ git add .
$ git commit
Yo quería crear un clon desnudo en otra máquina:
$ cd ..
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Ejecuté el clon pero no imprimí ninguna respuesta. Me conecté a la máquina del servidor e intenté ver cómo se almacenan los archivos. El camino / GitRepos estaba vacío, así que decidí hacer el clon nuevamente:
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Esta vez la respuesta fue:
fatal: la ruta de destino 'ssh: // usuario @ servidor: /GitRepos/myproject.git' ya existe y no es un directorio vacío.
Pero vi que el camino estaba vacío.
Que está pasando aqui ?
git clone --bare
haga lo que crees que hará.Respuestas:
Esto posiblemente no esté relacionado directamente con la pregunta; pero un error que acabo de cometer, y veo en el OP, es la especificación de la URL, es
ssh://user@server:/GitRepos/myproject.git
decir, tiene dos puntos:
y una barra diagonal/
después de que significa una ruta absoluta.Luego encontré el clon de Git, ssh: No se pudo resolver el nombre de host - git, desarrollo - Nicolas Kuttler (ya que ese fue el error que estaba recibiendo, en la
git
versión 1.7.9.5), señalando:... que también fue mi problema! Básicamente ,
git
conssh
, o usasssh://[email protected]/absolute/path/to/repo.git/
- solo una barra diagonal para la ruta absoluta en el servidor[email protected]:relative/path/to/repo.git/
- solo dos puntos (no debe tener lassh://
ruta relativa para en el servidor (en relación con el directorio de inicio de lausername
máquina del servidor)Espero que esto ayude a alguien,
¡salud!
fuente
ssh://
prefijo. Acabo de pasar 20 minutos tratando de resolver esto.git clone [email protected]:relative/path/to/repo.git/
Deberia trabajar.Para repositorios en GitHub, intente:
Para configurar git para clonar a través de ssh, consulte:
Generando claves SSH y agregue su clave generada en Configuración de cuenta -> Claves SSH
Clonación con SSH
fuente
Debe ejecutar el comando clonar en lo que está llamando al servidor. Pero apuesto a que no está ejecutando un servidor ssh en su cliente local, por lo que no funcionará de todos modos. Le sugiero que siga este enfoque (consulte el manual porque lo estoy haciendo de memoria)
git init --bare
git remote add origin ssh://user@server:/GitRepos/myproject.git
seguido porgit push origin master
fuente
Descargo de responsabilidad: Esta es solo una copia de un comentario de bobbaluba que se hizo más visible para futuros visitantes. Me ayudó más que cualquier otra respuesta.
Debe soltar el
ssh://
prefijo cuando lo usegit clone
como ejemplofuente
prueba esto.
Paso 1:
Paso 2:
(usando la tecla Intro para el valor predeterminado) Paso 3: Para configurar el archivo de configuración
Paso 4:
Paso 5:
Cuando termine el Paso 4
1. se descargará
el archivo test2.git 2. obtendrá el nuevo archivo (conocido_hosts) en ~ / .ssh
PD: creo el id_rsa e id_rsa.ub por mí mismo y lo entrego al servidor de Gitlab. usando ambas teclas para cualquier lado del cliente (Windows y Linux).
fuente
Git 101:
git
es un sistema de control de versiones descentralizado. No es necesario que necesite un servidor para comenzar a usar git. Aún así, es posible que desee hacer eso, ya que se ve bien, ¿verdad? (También es útil si desea trabajar en un solo proyecto desde varias computadoras).Por lo tanto, para ejecutar un "servidor", debe ejecutarlo,
git init --bare <your_project>.git
ya que esto creará un repositorio vacío, que luego puede importar en sus máquinas sin tener que manipular los archivos de configuración en su.git
directorio.Después de esto, podría clonar el repositorio en sus clientes, ya que se supone que funciona, pero descubrí que algunos clientes (a saber
git-gui
) no podrán clonar un repositorio que está completamente vacío. Para evitar esto, debes corrercd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master
. (Tenga en cuenta que es posible que necesite configurar su nombre de usuario y correo electrónico para el git de esa máquina si no lo ha hecho en el pasado. Los comandos reales para ejecutar estarán en el mensaje de error que recibe, así que los omitiré).Entonces, en este punto, puede clonar el repositorio a cualquier máquina simplemente ejecutando
git clone <user>@<server>:<relative_path><your_project>.git
. (Como otros han señalado, es posible que deba agregarle un prefijossh://
si usa la ruta absoluta). Esto supone que ya puede iniciar sesión desde su cliente al servidor. (También obtendrá puntos de bonificación por configurar un archivo de configuración y claves parassh
, si tiene la intención de enviar muchas cosas al servidor remoto).Algunos enlaces relevantes:
esto te dice más o menos lo que necesitas saber.
Y esto es para aquellos que conocen el funcionamiento básico de git pero a veces olvidan la sintaxis exacta.
fuente
Quiero intentar una respuesta que incluya git-flow y tres 'puntos' o casos de uso, el repositorio central de git, el desarrollo local y la máquina de producción. Esto no está bien probado .
Estoy dando comandos increíblemente específicos. En lugar de decir
<your folder>
, diré/root/git
. El único lugar donde estoy cambiando el comando original es reemplazar mi nombre de servidor específico conexample.com
. Explicaré el propósito de las carpetas para que pueda ajustarlo en consecuencia. Avíseme si hay alguna confusión y actualizaré la respuesta.La versión de git en el servidor es 1.7.1. El servidor es CentOS 6.3 (Final).
La versión de git en la máquina de desarrollo es 1.8.1.1. Este es Mac OS X 10.8.4.
El repositorio central y la máquina de producción están en la misma máquina.
El repositorio central, que los usuarios de svn pueden relacionar como 'servidor', se configura de la siguiente manera. Tengo una carpeta
/root/git
donde guardo todos mis repositorios git. Quiero crear un repositorio git para un proyecto que llamo 'flores'.El comando git dio dos mensajes:
Nada de que preocuparse.
En la máquina de desarrollo se configura de la siguiente manera. Tengo una carpeta
/home/kinjal/Sites
donde pongo todos mis proyectos. Ahora quiero obtener el repositorio central de git.Esto me lleva a un punto en el que puedo comenzar a agregarle cosas. Primero configuré git flow
Por defecto esto está en la rama
develop
. Agrego mi código aquí, ahora. Entonces necesito comprometerme con el repositorio central de git.En este punto, empujó a la rama de desarrollo. También quiero agregar esto a la rama maestra.
Tenga en cuenta que no hice nada entre el inicio del lanzamiento y el final del lanzamiento. Y cuando terminé el lanzamiento, se me solicitó editar dos archivos. Esto empujó a la rama de desarrollo a dominar.
En el sitio de producción, que está en la misma máquina que mi repositorio central de git, quiero poner el repositorio
/var/www/vhosts/example.net
. Ya tengo/var/www/vhosts
.Si la máquina de producción también estuviera en una máquina diferente, el
git clone
comando se vería como el utilizado en la máquina de desarrollo.fuente
Por adelantado, me faltan un poco mis habilidades GIT.
Eso va a clonar un repositorio desnudo en su máquina, que solo contiene las carpetas dentro de las
.git
cuales hay un directorio oculto. ejecutarls -al
y debería ver.git
ocd .git
dentro de su repositorio.¿Puedes agregar una descripción de tu intención para que alguien con más habilidades GIT pueda ayudar? ¿Qué es lo que realmente quieres hacer, no cómo planeas hacerlo?
fuente
Hice: git clone --bare "/ GITREPOSITORIES / RepoA" "ssh: // luc @ EERSTENASDS119J / volume1 / RepoA" Resultado: fatal: ruta de destino 'ssh: // luc @ EERSTENASDS119J / volume1 / RepoA' ya existe y es No es un directorio vacío.
El sistema creó un directorio ssh: // luc @ EERSTENASDS119J / volume1 / RepoA en mi ruta actual.
Entonces git clone no interpretó la especificación de URL. Usó la solución alternativa de Alec.
fuente
git clone git @ server: Ejemplo / proyect.git
fuente