Soy un novato 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, bajé el Trunk 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 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 casa es excelente 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 simple de hacer esto sería simplemente tener la carpeta de código compartida en la LAN y hacer:
git clone file://192.168.10.51/code
desafortunadamente esto no parece estar funcionando para mí:
entonces 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:
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, recibo 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é en volver y volver a intentarlo sin mapear. El resultado final fue:
git clone file://\\\\192.168.0.51\code
Esto funcionó muy bien.
Gracias
Respuestas:
Puede especificar la URL del control remoto aplicando la ruta UNC al protocolo del archivo. Esto requiere que uses cuatro barras:
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 compartidocode
que es un repositorio git, entonces los dos comandos siguientes deberían funcionar igualmente:Si el repositorio de Git está en un subdirectorio, simplemente agregue la ruta:
fuente
El comando anterior utiliza la notación de ruta POSIX para el directorio con su repositorio git. Para Windows es (el directorio
C:/path/to/repo
contiene el.git
directorio):El repositorio será clonado a
C:\some\dir\my_project
. Si omitefile:///
parte, entonces la--local
opción está implícita.fuente
la respuesta con el nombre de host no funcionó para mí, pero esto sí:
fuente
Tuve éxito al hacer esto usando file: //, pero con una barra adicional para denotar una ruta absoluta.
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
fuente
Tal vez asigne el recurso compartido como una unidad de red y luego haga
Principalmente solo una suposición; Siempre hago esto usando ssh. Seguir esa sugerencia, por supuesto, significará que necesitará tener esa unidad asignada cada vez que empuje / tire hacia / desde la computadora portátil. No estoy seguro de cómo preparar ssh para trabajar bajo Windows, pero si va a hacer esto mucho, valdría la pena investigarlo.
fuente
cd
otro directorio en laZ:
unidad. IIRC; No he sido usuario de Windows en bastante tiempo. También puede ser quegit
interprete las letras de unidad de manera diferente a la convención estándar de Windows. ¿Intentaste con `Z:`?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 del equipo y las opciones de IP no me funcionaban. Un detalle adicional que puede / puede no ser importante es que el repositorio era un repositorio desnudo que había inicializado y enviado desde una máquina diferente.
Intenté clonar project1 como se indicó anteriormente con comandos como:
y
Lo que funcionó para mí fue algo más simple:
Nota: a pesar de que el repositorio que se estaba clonando era simple, 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 git).
fuente
Ingrese rutas absolutas o rutas relativas.
Por ejemplo, el primero a continuación usa rutas absolutas:
(Esto es desde el interior 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)
Lo siguiente utiliza rutas relativas:
fuente
Si bien la ruta UNC es compatible desde Git 2.21 (febrero de 2019, ver más abajo), Git 2.24 (Q4 2019) permitirá
No más
file:////xxx
'file://
' es suficiente para referirse a una ruta compartida UNC.Consulte " Error de recuperación de Git con UNC ".
Tenga en cuenta que desde 2016 y el MingW-64
git.exe
empaquetado con Git para Windows , se admite una ruta UNC.(Consulte " ¿Cómo se relacionan entre sí msys, msys2 y MinGW-64? ")
Y con Git 2.21 (febrero de 2019), este soporte se extiende incluso en un shell msys2 (con comillas alrededor de la ruta UNC).
Ver commit 9e9da23 , commit 5440df4 (17 de enero de 2019) por Johannes Schindelin (
dscho
) .Ayudado por: Kim Gybels (
Jeff-G
) .(Fusionada por Junio C Hamano -
gitster
- en commit f5dd919 , 05 feb 2019)Antes de Git 2.21, debido a una peculiaridad en el método de Git para generar
git-upload-pack
, hay un problema al pasar caminos con barras invertidas en ellos: Git forzará la línea de comando a través del shell, que tiene diferentes semánticas de citas en Git para Windows (siendo un MSYS2 programa) que los ejecutables regulares de Win32 como élgit.exe
mismo.El síntoma es que la primera de las dos barras invertidas en las rutas UNC del formulario
\\myserver\folder\repository.git
se elimina .Esto se mitiga ahora:
Ver
t/t5580-clone-push-unc.sh
fuente
Después del clon, para mí empujar no estaba funcionando.
Solución: donde se clona el repositorio, abra la carpeta .git y el archivo de configuración.
Para el valor de configuración de URL de origen remoto:
fuente