2012-04-05 14 views
6

Aquí está el escenario. Hice una rama "dev" fuera de la rama "maestra" e hice algunos commits nuevos. Algunos de esos cambios solo serán relevantes para mi máquina de desarrollo local. Por ejemplo, cambié una variable de URL para apuntar a un servidor apache local en lugar de la URL real que se publica en línea (lo hice por la velocidad durante la fase de prueba). Ahora me gustaría incorporar mis cambios de la rama de desarrollo a la rama principal, pero NO esos cambios que solo tienen sentido en mi entorno local.Cómo fusionar sucursales en Git por "trozo"

Había imaginado algo así como una combinación - parche que me permitiera elegir los cambios que deseo fusionar línea por línea.

Alternativamente, tal vez podría consultar la rama "principal", pero mantener los archivos en mi directorio de trabajo como estaban en la rama "dev", luego hacer un git add --patch. Funcionaría eso?

Respuesta

2

Tal vez podrías probar algo como esto?

git merge --squash --no-commit $YOUR_OTHER_BRANCH 
git reset HEAD 
git add -p 
git commit 
+0

tenga en cuenta que --squash implica --no-commit, a partir del último git de todos modos – CharlesB

6

Un enfoque sería fusionar los cambios desde la otra rama, pero eliminar el contenido específico del desarrollo antes de comprometer la fusión.

Primero, obtenga los cambios, sin comprometerlos con git merge --no-ff --no-commit dev.

eliminar los cambios de desarrollo específico, ya sea mediante la edición de los archivos afectados y git add ing, o git reset HEAD los archivos afectados y luego git add --patch las partes que desea.

Luego, realice la fusión. Una ventaja de hacer un compromiso de fusión es que las fusiones futuras serán indoloras. Debido a que las confirmaciones específicas del desarrollo se consideran fusionadas, las fusiones futuras que no involucran piezas específicas del desarrollo se pueden realizar con un simple git merge dev. De esta forma, puede mantener indefinidamente una bifurcación separada con su propia configuración, sin dejar de fusionar los cambios sin dolor en la rama principal.

+0

Eso no parece funcionar. Compré git merge --no-commit dev y regresé: "Actualizando 91a6696..056b567 Avance rápido". Entonces escribí git reset HEAD y git add --patch y dice "no hay cambios". – asolberg

+0

Ah, perdón por eso, no anticipé una fusión rápida. Pruebe con el comando actualizado que incluye '--no-ff'. Eso debería obligar a la fusión a comprometerse a crearse, aunque no realmente comprometida. – blahdiblah

Cuestiones relacionadas