2009-09-15 12 views
5

Estoy tratando de mantener mis archivos estáticos en una rama separada para evitar que se combinen en mi master brach (en Heroku, la babosa de su aplicación necesita mantenerse pequeña). No quiero ignorar mis archivos estáticos, porque quiero mantenerlos dentro de mi rama "devel".Separar archivos en Git

Idealmente me gustaría mantener test.db en blanco y toda mi carpeta pública en blanco en la rama principal.

Entonces, ¿puedo crear una 'superposición' en una rama? ¿Puedo evitar que ciertos archivos/directorios se fusionen en mi rama principal?

+0

@Jonathan: Gracias por la revisión ortográfica. – arbales

+0

Nota: esta es una solución, pero otros pueden proponer alguna otra organización para lograr el mismo resultado. – VonC

+0

Como sospecho. Ciertamente estaría interesado en escuchar otras soluciones interesantes, incluso solo para la edificación de mi propio/otro. – arbales

Respuesta

8

Se podría definir esos mismos archivos estáticos en su rama principal, pero:

Desde ese .gitattribute no se definiría en otras ramas, la fusión de esos archivos procedería normalmente.


La idea es definir un archivo .gitattributes en el directorio de los archivos estáticos en la rama principal con el siguiente contenido:

myStaticFile1 merge=keepMine 
myStaticFile2 merge=keepMine 
myStaticFile3 merge=keepMine 

Esos tres archivos siempre mantendrán su contenido local (que está vacío en el maestro) cuando se fusiona con el maestro.

Deberá definir un controlador de combinación (aquí llamado "keepmine"). Vea la pregunta vinculada para esa secuencia de comandos.

+0

¿Podría explicarlo con un poco más de detalle? No he usado atributos antes y el enlace no es 100% sencillo. – arbales

+0

impresionante - gracias por la explicación! – arbales

+0

Además, parece que no puedo definir comodines, probé public/* merge = keepMine, que no funcionó. También intenté eliminar el directorio y tocarlo, creando un archivo, pero Git se queja y crea otra versión de público en la fusión. – arbales

0

Agregue los archivos a .gitignore en el maestro. Cuando finalice la descarga, .gitignore cambiará y ya no los ignorará. (Tenga en cuenta que si ejecuta git clean -x, los archivos se sobrescribirán).