GIT clone repo a través del sistema de archivos local en Windows


Soy un completo novato cuando se trata de GIT. He estado dando mis primeros pasos en los últimos días. Configuré un repositorio en mi computadora portátil, bajé el tronco de un proyecto SVN (tuve algunos problemas con las ramas, no las conseguí funcionar), pero todo parece estar bien allí.

Ahora quiero ser capaz de tirar o empujar desde la computadora portátil a mi escritorio principal. La razón es que la computadora portátil es útil en el tren, ya que paso 2 horas al día viajando y puedo hacer un buen trabajo. Pero mi máquina principal en el hogar es ideal para el desarrollo. Así que quiero ser capaz de 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 tener la carpeta de código compartida a través de la LAN y hacer:

git clone file://192.168.10.51/code

Desafortunadamente esto no parece estar funcionando para mí:

Así que abro un cmd de git bash y escribo el comando anterior, estoy en C:\code (la carpeta compartida para ambas máquinas) esto es lo que obtengo de nuevo:

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 otros desarrolladores y el servidor CI, etc., se extraerá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 todo lo que ayudó. Probé el mapeo de una unidad y eso funcionó, así que pensé que volvería y volvería a intentarlo sin mapeo. El resultado final fue:

git clone file://\\\\192.168.0.51\code

Esto funcionó muy bien.

Gracias

Author: raam86, 2010-03-26

7 answers

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 recurso compartido llamado code que a su vez es un repositorio git, entonces ambos de los siguientes comandos deberían funcionar por igual:

git clone file:////main/code
git clone file:////192.168.10.51/code

Si el repositorio 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
 175
Author: poke,
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-11-15 22:20:27
$ 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):

C:\some\dir\> git clone --local file:///C:/path/to/repo my_project

El repositorio será clonado a C:\some\dir\my_project. Si omite file:/// parte entonces --local opción está implícita.

 117
Author: jfs,
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
2010-03-25 23:37:22

La respuesta con el nombre de host no funcionó para mí pero esto lo hizo :

Archivo clon de Git:////home/git/repositories/MyProject.git /

 14
Author: Talaat Safwat,
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-07-09 12:49:46

Tuve éxito en hacer esto usando file://, pero con una barra diagonal 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 se puede 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/
 7
Author: Mark F Guerra,
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-03-19 16:35:01

Tal vez mapear el recurso compartido como una unidad de red y luego hacer

git clone Z:\

En su mayoría solo una suposición; siempre hago esto usando ssh. Siguiendo esa sugerencia, por supuesto, significará que necesitará tener esa unidad mapeada cada vez que empuje/tire hacia/desde la computadora portátil. No estoy seguro de cómo aparejar ssh para trabajar bajo Windows, pero si vas a hacer esto mucho que podría valer la pena investigar.

 6
Author: intuited,
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
2010-03-25 23:02:01

No estoy seguro de si fue debido a mi versión de git (1.7.2) o qué, pero los enfoques enumerados anteriormente usando el nombre de la máquina y las opciones de IP no funcionaban para mí. Un detalle adicional que puede / puede no ser importante es que el repositorio era un repositorio desnudo que había inicializado y empujado desde una máquina diferente.

Estaba tratando de clonar project1 como se aconseja 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 hizo trabajo para mí fue algo más simple:

$ git clone ../git/project1
Cloning into project1...
done.

Nota - a pesar de que el repositorio que se clona era desnudo, esto produjo un clon 'normal' con todos los archivos de código/imagen/recursos reales que esperaba (a diferencia de los internos del repositorio de git).

 3
Author: bargar,
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-08-09 21:30:24

Introduzca rutas absolutas o rutas relativas.

Por ejemplo, el primero de abajo usa 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. y 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/
 1
Author: sidquanto,
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-19 16:59:25