¿Cómo puedo hacer que mi repositorio local esté disponible para git-pull?


Tengo un repositorio de copia de trabajo en el que he estado trabajando sin problema; el origen de este repositorio está en GitHub.

Me gustaría hacer que mi repositorio de copia de trabajo esté disponible como el origen de mi máquina de compilación (una máquina virtual en otro host físico), de modo que las confirmaciones que haga en mi copia de trabajo se puedan compilar y probar en la máquina de compilación sin tener que ir primero a través de GitHub. Ya tengo una compilación para el repositorio GitHub en marcha, pero me gustaría que este sea un repositorio/compilación" dorado"; es decir, si algo entra ahí, la compilación contra GitHub debe estar garantizada para pasar.

He mirado la documentación de las URL de Git, y veo que existe la opción de usar una URL en el formulario git://host.xz[:port]/path/to/repo.git/ (ver, por ejemplo, git-clone documentation). Quiero hacer esto de la manera más simple posible, con el mínimo de configuración: no quiero tener que configurar un demonio SSH o servidor web solo para publicar esto en mi máquina de compilación.

Estoy ejecutando Windows 7 x64 RC, tengo MSysGit y TortoiseGit instalados, y he abierto el puerto predeterminado de Git (9814) en el firewall. Por favor asuma que el repositorio de la copia de trabajo está en D:\Visual Studio Projects\MyGitRepo, y el nombre de host es devbox. La máquina de compilación es Windows Server 2008 x64. He estado probando el siguiente comando en la máquina de compilación, con la salida asociada:

D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)

¿Me estoy perdiendo algo?

Author: warvariuc, 2009-06-11

6 answers

Existen cinco posibilidades para configurar un repositorio para pull from:

  • sistema de archivos local: git clone /path/to/repo o git clone file://path/to/repo. Menos trabajo si tiene un sistema de archivos en red, pero no un uso muy eficiente de la red. (Esta es casi exactamente la solución propuesta por Joakim Elofsson )
  • Protocolos HTTP: git clone http://example.com/repo. Necesita cualquier servidor web , y también necesita ejecutar (quizás automáticamente, desde un gancho) git-update-server-info para genere la información necesaria para obtener/extraer a través de protocolos "tontos".
  • SSH: git clone ssh://example.com/srv/git/repo o git clone example.com:/srv/git/repo. Necesita configurar el servidor SSH (demonio SSH), y tener SSH instalado en el cliente (por ejemplo, PuTTY en MS Windows).
  • protocolo git: git clone git://example.com/repo. Necesita ejecutar git-daemon en el servidor; consulte la documentación para obtener más detalles (puede ejecutarlo como proceso independiente solo para obtener, no es necesario ejecutarlo como servicio). git-daemon es una parte de git.
  • paquete : Generas bundle en el servidor usando el comando git-bundle, lo transfieres a una máquina cliente de cualquier manera (incluso a través de USB) y clonas usando git clone file.bndl (si el clon no funciona, puedes hacer "git init", "git remote add" y "git fetch").

Lo que le falta en su ejemplo es probablemente ejecutar git-daemon en el servidor. Eso, o configurar mal git-daemon.

Desafortunadamente no puedo ayudarle con la ejecución de git-daemon como servicio en MS Windows. No hay nada en anuncio para sin embargo, la última versión de msysGit sobre git-daemon no funciona.

 116
Author: Jakub Narębski,
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-05-23 12:32:14

Además de las respuestas de Jakub Narębski, hay otra manera, más en línea con su pregunta original. Puedes clonar desde github como lo haces normalmente, luego cuando quieras realizar una extracción única desde tu repositorio local, solo haz esto:

git pull /path/to/repo master

(en lugar de master puedes poner cualquier nombre de rama.)

 16
Author: Pod,
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
2009-06-11 17:30:30

La ruta ssh funciona bien pero requiere un servidor ssh remoto. Si tiene una plataforma Windows, entonces Cygwin proporciona un servidor ssh que funciona con Git, pero actualice manualmente Git si usa Cygwin Git (escribí algunas sugerencias en http://alecthegeek.wordpress.com/2009/01/21/top-tip-upgrade-git-on-cygwin/).

 1
Author: Alec the Geek,
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
2009-06-13 03:27:39

Recientemente cambié uno de mis proyectos git para replicarse en un servidor HTTP usando sitecopy para hacer las cargas de archivos reales.

Es bastante fácil, solo tiene que utilizar git update-server-info a continuación, el espejo .git directory a algún directorio accesible por http en tu servidor. Usé el proyecto.git', que es bastante común.

Git pull from http://site/project-git funciona como un champ, y no tengo que tener nada en el servidor excepto acceso FTP, aunque sitecopy soporta webdav como bien.

Sin embargo, no recomiendo usar sitecopy, ya que no mantiene varias máquinas sincronizadas bien. Para mi proyecto, el repositorio HTTP es readonly, y las actualizaciones gold vienen de una sola máquina, por lo que funciona lo suficientemente bien.

 1
Author: davenpcj,
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
2009-06-15 14:40:10

Si tienes un camino como

C:\Project\

Y ya lo hiciste git init, así que también tienes una carpeta

C:\Project\.git\

Ahora crea una nueva carpeta

C:\.git\

Vaya a esa carpeta y ejecute git clone --bare ..\Project (bare es importante),
vuelve a tu carpeta C:\Project\ y haz un git remote add-url local ..\.git\Project.
Ahora sólo hazlo.git add -A, git commit -m "HelloWorld" y git push local master.

Puede compartir la carpeta Project, conectarla a Z: y hacer git clone Z:\Project - puede usar ahora git pull origin master y git push origin master para empujar / tirar cambios de un equipo a otro.

 1
Author: metadings,
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-11-11 07:44:36

Si su host remoto está en la misma red de Windows, es decir, puede acceder a él como \remotehost, a continuación, puede asignar la unidad de red en el explorador, digamos z: z > \ remotehost\repodir, después de eso, puede usar 'git clone / z / myproject' para clonar el proyecto

 0
Author: ycnix,
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
2011-10-31 11:40:14