repositorio - Repetición de clones de GIT en el sistema de archivos local en Windows
git tag remove (7)
Soy un Noob completo cuando se trata de GIT. He estado dando mis primeros pasos en los últimos días. Configuré un repositorio en mi computadora portátil, saqué el Tronco de un proyecto SVN (tuve algunos problemas con las sucursales, no los hice funcionar), pero todo parece estar bien allí.
Ahora quiero poder tirar o empujar desde la computadora portátil a mi escritorio principal. La razón por la que la computadora portátil es útil en el tren es que paso 2 horas al día viajando y puedo hacer un buen trabajo. Pero mi máquina principal en casa es genial para el desarrollo. Así que quiero poder empujar / tirar de la computadora portátil a la computadora principal cuando llegue a casa. Pensé que la forma más sencilla de hacer esto sería simplemente compartir la carpeta de códigos en la LAN y hacer:
git clone file://192.168.10.51/code
desafortunadamente esto no parece estar funcionando para mí:
así que abro un git bash cmd y escribo el comando anterior, estoy en C: / code (la carpeta compartida para ambas máquinas) esto es lo que recibo:
Initialized empty Git repository in C:/code/code/.git/
fatal: ''C:/Program Files (x86)/Git/code'' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
¿Cómo puedo compartir el repositorio entre las dos máquinas de la manera más simple?
Habrá otras ubicaciones que serán puntos de almacenamiento oficiales y lugares donde los demás desarrolladores y el servidor de CI, etc., obtendrán, esto es solo para que pueda trabajar en el mismo repositorio en dos máquinas.
Según la sugerencia de Sebastian obtengo lo siguiente:
C:/code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: ''C:/Program Files (x86)/Git/code'' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
** EDITAR - RESPUESTA **
Gracias a todos los que ayudaron. Intenté mapear un disco y funcionó, así que pensé que volvería y volvería a intentar sin mapear. El resultado final fue:
git clone file://////192.168.0.51/code
Esto funcionó muy bien.
Gracias
O bien ingrese rutas absolutas o rutas relativas.
Por ejemplo, el primero a continuación utiliza rutas absolutas:
(Esto es desde dentro de la carpeta que contiene el repositorio y la copia de seguridad como subcarpetas. También recuerde que la carpeta de copia de seguridad no se modifica si ya contiene algo. Si no está presente, se creará una nueva carpeta)
~/git$ git clone --no-hardlinks ~/git/git_test1/ ~/git/bkp_repos/
Lo siguiente usa rutas relativas:
~/git$ git clone --no-hardlinks git_test1/ bkp_repos2/
La respuesta con el nombre de host no me funcionó, pero esto sí:
git clone file: ////home/git/repositories/MyProject.git/
No estoy seguro de si fue debido a mi versión de git (1.7.2) o qué, pero los enfoques enumerados anteriormente con el nombre de la máquina y las opciones de IP no funcionaban para mí. Un detalle adicional que puede / no ser importante es que el repositorio fue un repositorio simple que yo había inicializado y empujado desde una máquina diferente.
Estaba tratando de clonar project1 como se indicó anteriormente con comandos como:
$ git clone file:////<IP_ADDRESS>/home/user/git/project1
Cloning into project1...
fatal: ''//<IP_ADDRESS>/home/user/git/project1'' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
y
$ git clone file:////<MACHINE_NAME>/home/user/git/project1
Cloning into project1...
fatal: ''//<MACHINE_NAME>/home/user/git/project1'' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Lo que funcionó para mí fue algo más simple:
$ git clone ../git/project1
Cloning into project1...
done.
Nota: aunque el repositorio desde el que se clonó estaba vacío, esto produjo un clon "normal" con todos los archivos de código / imagen / recurso reales que esperaba (a diferencia de los elementos internos del repositorio de git).
Puede especificar la URL del control remoto aplicando la ruta UNC al protocolo de archivo. Esto requiere que uses cuatro barras:
git clone file:////<host>/<share>/<path>
Por ejemplo, si su máquina principal tiene la IP 192.168.10.51 y el nombre de la computadora main
, y tiene un code
nombre compartido que a su vez es un repositorio git, entonces los dos comandos siguientes deberían funcionar por igual:
git clone file:////main/code
git clone file:////192.168.10.51/code
Si el repositorio de Git está en un subdirectorio, simplemente agregue la ruta:
git clone file:////main/code/project-repository
git clone file:////192.168.10.51/code/project-repository
Tal vez mapear el recurso compartido como una unidad de red y luego hacer
git clone Z:/
Sobre todo sólo una conjetura; Siempre hago estas cosas usando ssh. Seguir esa sugerencia, por supuesto, significará que deberá tener ese disco asignado cada vez que presione / jale hacia / desde la computadora portátil. No estoy seguro de cómo armar ssh para trabajar bajo Windows, pero si vas a hacer mucho esto, vale la pena investigar.
Tuve éxito al hacer esto usando file: //, pero con una barra adicional para denotar una ruta absoluta.
git clone file:///cygdrive/c/path/to/repository/
En mi caso, estoy usando Git en Cygwin para Windows, que puedes ver debido a la parte / cygdrive / c en mis rutas. Con algunos ajustes en la ruta, debería funcionar con cualquier instalación de git.
Agregar un control remoto funciona de la misma manera
git remote add remotename file:///cygdrive/c/path/to/repository/
$ git clone --no-hardlinks /path/to/repo
El comando anterior utiliza la notación de ruta POSIX para el directorio con su repositorio git. Para Windows es (directorio C:/path/to/repo
contiene .git
directorio .git
):
C:/some/dir/> git clone --local file:///C:/path/to/repo my_project
El repositorio se C:/some/dir/my_project
en C:/some/dir/my_project
. Si omite file:///
part, entonces está implícita la opción --local
.