Envíe los cambios de git a una unidad de red compartida

90

¿Cómo puede un equipo de cuatro personas usar Git (específicamente Github para Windows ) para impulsar cambios locales en una unidad de red compartida?

En este momento (sin Git) tenemos que copiar los archivos de la unidad de red a nuestra máquina local, editar los archivos y luego volver a cargarlos en la unidad de red compartida. Este es un proceso minucioso que puede llevar a muchos errores, pero parece que Git podría ayudarnos en algo.

¿Podemos simplemente instalar Git en la unidad compartida e ir desde allí?

usuario1549303
fuente

Respuestas:

123

No estoy seguro de si encontró algo que le funcione o no, pero tengo un artículo sobre cómo hacer eso mismo en una unidad de red de Windows:

http://tony.halcyonlane.com/blog/2011/09/22/Using-git-at-work-on-a-Windows-network-drive/

Desde un indicador de cmd, cambie a su unidad asignada.

$ cd g:

Luego, ingrese a su repositorio de git que pronto será.

$ cd scripts

Luego crea un repositorio git vacío. Si no usa la opción --bare, tendrá problemas, así que no lo deje fuera.

$ git init --bare

Ahora, si aún no tiene un repositorio local de git, puede clonar su nuevo repositorio donde quiera navegando de regreso a su unidad local.

$ c:

$ cd trabajo / scripts

$ git clon archivo: // g: \ scripts

Cuando clona, ​​obtiene automáticamente un control remoto llamado "origen" y puede enviarlo al servidor para mantenerlo a salvo en cualquier momento que realice cambios localmente.

$ git push origin master

Si ya tiene un repositorio de git y solo desea enviarlo a la unidad compartida, puede hacerlo desde su directorio de git local.

$ git remoto agregar archivo de origen: // g: \ scripts

$ git push origin master

Tony Eichelberger
fuente
1
Gracias, hice exactamente esto para un proyecto personal en mi red doméstica.
Martin Snyder
Seguí estos pasos pero obtengo los siguientes errores cuando ejecuto git push origin master error: no se puede generar sh: no
existe
Gracias.
Me
Para cualquiera que no tenga su unidad compartida asignada, hay pushd (y popd) para crear una unidad temporal virtual para navegar ( ver enlace )
LoJo
¿Qué problemas tendrá si no usa --bare? Ya tengo un repositorio no básico en una unidad de red y me gustaría usarlo como control remoto.
Fractaly
24

Nuestro equipo actualmente hace exactamente esto. Cada desarrollador tiene lo siguiente:

  1. Git instalado en su máquina local
  2. Acceso a su propia unidad compartida personal ( L:)
  3. Acceso a una unidad de grupo compartida ( V:)

Tenemos el repositorio "remoto" (configurado usando init -bare) en la V:unidad, y todos tienen un clon en su L:unidad personal . Todos los cambios se realizan en la L:unidad y se envían a la V:unidad, que luego los otros desarrolladores retiran más tarde a sus respectivos repositorios personales en sus L:unidades. Esto funciona sin problemas y mitiga la necesidad de un servidor Git.

eykanal
fuente
¡Bien, excelente! ¿Necesito crear primero un repositorio local y luego configurar un control remoto de ese repositorio en la unidad compartida?
user1549303
1
@ user1549303 - Así es como lo hacemos. Puede crear el repositorio local (nuestro L:repositorio de unidad) usando git init, y luego crear el remoto (nuestro repositorio de v:unidad) usando git clone --bare(o a git init --bare, y luego presionar desde L:).
Eykanal
@eykanal - Mi equipo actualmente usa una biblioteca de control de fuente antigua y horrible y estamos buscando cambiar a git. Una cosa que nuestra biblioteca actual me permite hacer es ver quién ha desprotegido un archivo, pero olvidó registrar los cambios. Con git, todos los repositorios son locales, entonces, ¿cómo puede saber si alguien olvidó presionar a "v:"?
Kevin Buchan
3
@KevinBuchan: le sugiero que publique su comentario como una nueva pregunta.
eykanal
1
¿Cómo reacciona Git cuando dos desarrolladores intentan enviar al mismo repositorio compartido (digamos V :) al mismo tiempo? ¿Ha tenido algún problema con las operaciones push simultáneas?
Jordi
2

Puede agregar otro puntero remoto a su unidad de red (git remote)

Entonces puedes empujar y tirar de manera similar a lo que haces con github

bluesman
fuente