2011-09-27 24 views
5

Situación

Nunca antes había usado git o cualquier otro control de versión. Ahora tengo un proyecto web que necesita tener una versión estable y una versión de desarrollo, ambos ejecutados en el mismo servidor en diferentes directorios.problemas básicos de comprensión de git

  • Estable: /var/www/afod/afod
  • Desarrollo: /var/www/afod_dev/afod

Ahora quiero usar Git para sincronizar los cambios de la versión dev-en-la versión estable y ya que nunca antes he utilizado VC sistemas que parece que no entiendo cómo hacer esto.

Lo que he hecho hasta ahora

he creado un repositorio git en /var/www/afod/afod y clonado en el directorio dev través de:

cd /var/www/afod_dev/afod 
git clone /var/www/afod/afod 

ahora tengo 2 repositorios que quiero mantener sincronizados usando git pull en el lado de la versión estable.

El problema (s)

ya tengo 2 ramas, web y prog. Pero parece que git pull en la versión estable sincroniza desde ambas ramas. Pero solo quiero sincronizar los cambios a la versión estable, que ya me he fusionado con la rama web en la versión dev.

total confusión

espero que de alguna manera podría señalar mi problema. Parece que tengo un problema básico de comprensión de cómo funciona Git, pero parece ser el software adecuado para hacer lo que quiero hacer. Básicamente quiero tener una rama que se sincronice automáticamente con la versión estable y otras ramas en las que me integre. Pero el desarrollo debe estar en un directorio diferente al de la versión estable.

En cuanto a la primera respuesta de Billy Luna

Bueno, estable y dev están alojados en un dominio diferente en un vserver Apache diferente. No tendría sentido trabajar en una rama de desarrollo que está en el directorio que las personas ven cuando navegan por el sitio.

Así que mi idea era clonar el repositorio y luego sincronizar estos.

¿Me sale algo mal aquí? ¿Cómo lidias con tales configuraciones?

+0

¿Qué está haciendo git que parece "git pull" está sincronizando estable desde ambas ramas? – Schwern

+0

Bienvenido al desbordamiento de pila, esta es una buena primera pregunta; Es mejor comentar directamente una respuesta en lugar de poner un comentario como una edición de su pregunta (como lo hizo con la respuesta de Billy). – CharlesB

Respuesta

4

Ramas

Creo que estás en el camino correcto, pero un confuso llittle con la idea de una rama. Puede visualizar una rama como dos ramas en un árbol. Ambos tienen el mismo tronco, fuente , pero las sugerencias son diferentes. Las diferencias se encuentran entre la misma base de código y pueden ser menores o mayores.Cuando ejecutas el comando git checkout <branch_name> le dices a git que quieres que diferentes consejos del árbol estén activos, copiado en el directorio de trabajo.

En su caso, una rama tiene el código de desarrollo y la otra tiene su código estable. Para obtener el código de la rama dev en la rama web, utilice git merge <branch_to_pull_in> Esto combina las puntas de esas dos ramas para que su contenido sea el mismo. Para obtener más información sobre sucursales en general, Here es una página genérica no git.

posible Solución

A continuación se muestra una solución que podría funcionar para usted. Hay otros flujos de trabajo posibles, pero este es uno de los más simples.

Clone su repositorio de desarrollo en /var/www/afod/afod. Que desde /var/www/afod/afod ejecute git checkout web y desde su devfolder, asegúrese de estar en la rama dev. git branch debe tener una línea como esta * dev.

Ahora tiene dos ramas diferentes del mismo repositorio desprotegidas en diferentes subcarpetas. Haz tu trabajo en dev como lo has hecho. Una vez que sienta que es estable, desde su carpeta dev ejecute git checkout web. Than, git merge dev. Esto fusionará esos cambios en su rama web. Ahora desde dentro de /var/www/afod/afod ejecuta git pull. Esto atraerá tus chnages al servidor de producción. Tanto el dev como el web se pasarán, pero solo el que está desprotegido estará en su directorio de trabajo.

Cuando desee volver a trabajar en la rama dev, ejecute git checkout dev desde la carpeta dev.

0

Creo que estable y el desarrollo debe ser ramas, no repositorios separados.

Aquí es un gran tutorial sobre git básica y cómo un sencillo flujo de trabajo puede trabajar: http://www.ralfebert.de/tutorials/git/

+0

El OP quiere tener dos clones diferentes del mismo repositorio. – CharlesB

Cuestiones relacionadas