remota - git push example
¿Cómo puedo hacer que mi repositorio local esté disponible para git-pull? (6)
Además de las respuestas de Jakub Narębski, hay otra forma, más en línea con tu pregunta original. Podrías clonar desde Github como lo haces normalmente, y luego cuando quieras realizar una extracción única de tu repositorio local, solo haz esto:
git pull /path/to/repo master
(En lugar de maestro puedes poner cualquier nombre de rama).
Tengo un repositorio de copia de trabajo en el que he estado trabajando sin problemas; el origen de este repositorio está en GitHub.
Me gustaría que mi repositorio de copia de trabajo esté disponible como el origen de mi máquina de creación (una máquina virtual en otro host físico), de modo que las confirmaciones que realice en mi copia de trabajo se puedan construir y probar en la máquina de creación sin tener que pasar por GitHub primero. Ya tengo una compilación para el repositorio de GitHub, pero me gustaría que este sea un repositorio / compilación "dorado"; es decir, si algo entra ahí, se debe garantizar que la compilación contra GitHub pase.
He revisado la documentación en las URL de Git y veo que existe la opción de usar una URL en la forma git://host.xz[:port]/path/to/repo.git/
(consulte, por ejemplo, git -montaje de documentación ). Quiero hacer esto de la manera más simple posible, con la configuración mínima: no quiero tener que configurar un daemon 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. D:/Visual Studio Projects/MyGitRepo
repositorio de 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 intentando el siguiente comando en la máquina de compilación, con el resultado asociado:
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 de algo?
Existen cinco posibilidades para configurar un repositorio para extraer de:
- sistema de archivos local :
git clone /path/to/repo
ogit 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 (tal vez automáticamente, a partir de un enlace) git-update-server-info para generar la información requerida para ir y traer a través de protocolos "tontos". - SSH :
git clone ssh://example.com/srv/git/repo
ogit clone example.com:/srv/git/repo
. Necesita configurar el servidor SSH (daemon 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; ver la documentación para más detalles (puede ejecutarlo como un proceso independiente solo para recuperar, no es necesario ejecutarlo como servicio). git-daemon es parte de git. - paquete : generas un paquete en el servidor usando el comando git-bundle , lo transfieres a una máquina cliente de cualquier forma (incluso a través de USB) y lo
git clone file.bndl
usandogit clone file.bndl
(si el clon no funciona, puedes hacer "git init" , "git remote add" y "git fetch").
Lo que te falta en tu ejemplo probablemente sea ejecutar git-daemon en el servidor. Eso, o configurar mal a git-daemon.
Lamentablemente, no puedo ayudarte con la ejecución de git-daemon como servicio en MS Windows. Sin embargo, no hay nada en el anuncio de la última versión de msysGit sobre git-daemon que no funcione.
La ruta ssh funciona bien pero requiere un servidor ssh remoto. Si tienes una plataforma Windows, Cygwin proporciona un servidor ssh que funciona con Git, pero actualiza manualmente Git si usa Cygwin Git (escribí algunos consejos en http://alecthegeek.wordpress.com/2009/01/21/top-tip-upgrade-git-on-cygwin/ ).
Recientemente cambié uno de mis proyectos de git para replicarlo en un servidor HTTP usando sitecopy para hacer las cargas de archivos reales.
Es bastante fácil, simplemente use git update-server-info
luego duplique el directorio .git a algún directorio accesible por http en su servidor. Usé ''project.git'', que es bastante común.
Git pull de http://site/project-git funciona como un campeón, y no tengo que tener nada en el servidor, excepto el acceso FTP, aunque sitecopy también admite webdav.
Sin embargo, no recomiendo usar sitecopy, ya que no mantiene bien sincronizadas varias máquinas. Para mi proyecto, el repositorio HTTP es de solo lectura, y las actualizaciones de oro provienen de una sola máquina, por lo que funciona lo suficientemente bien.
Si su host remoto está en la misma red de Windows, es decir, puede acceder a él como / remotehost, entonces puede mapear la unidad de red en el explorador, digamos z: -> / remotehost / repodir, luego puede usar ''git clone / z / myproject ''para clonar proyecto
Si tienes un camino como
C:/Project/
y ya lo hiciste, así que también tienes una carpeta
C:/Project/.git/
Ahora creas una nueva carpeta
C:/.git/
Ve a esa carpeta y ejecuta git clone --bare ../Project
(al descubierto es importante),
Regrese a su carpeta C:/Project/
y haga un git remote add-url local ../.git/Project
.
Ahora solo debes 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
- ahora puede usar git pull origin master
y git push origin master
para hacer push / pull cambios de una computadora a otra.