Puede mantener una segunda rama para el despliegue de Heroku, que no contiene ninguno de esos archivos, pero todavía se funde de maestro. (Por supuesto, tendrás que encontrar un sistema para resolver los conflictos de fusión que obtienes cuando modificas los archivos .ai y .psd en el maestro).
Lo específico que pregunta es imposible, por la simple razón de que cuando se empuja, se transfieren los commit exactos de un repositorio a otro, y dos commits que no tienen el mismo árbol son por definición commits diferentes.
Sugerencia: Las versiones más recientes de git tienen una opción --porcelain
para git status
que proporcionará información fácil de analizar como "M archivo1" "archivo DU2" (modificado y no modificado/eliminado por nosotros, respectivamente). Se podría escribir un envoltorio git-fusión para su sucursal de despliegue que trata de la fusión, y automáticamente se limpia los conflictos esperados:
git checkout deploy
if ! git merge master; then
git rm $(git status --porcelain | awk '/^DU/ {print $NF}')
fi
(La razón por la que imprimí $NF
en lugar de $2
es que si cambió el nombre del archivo, se' Se verá como "DU original_name -> new_name", y la copia colocada en el árbol de trabajo será new_name, no original_name.)
Por supuesto, la secuencia de comandos podría volverse más compleja si tu situación es - podrías buscar solo ciertas extensiones (agréguelas al patrón de limitación de awk), o incluso capture toda la salida en un script de perl para que pueda hacer fácilmente una lógica más sofisticada ...
No hay manera simple de hacer esto. Tal vez esta respuesta ayude: http://stackoverflow.com/questions/2454661/heroku-and-github-integration-how-to-structure-the-project/2454778#2454778 – mckeed
Gracias por el comentario. Supongo que tendré que encontrar un trabajo (hack) alrededor. –