Como se mencionó, si desea un "alijo por rama", realmente desea una nueva rama de bifurcación de la sucursal existente.
Además, además del hecho ya mencionado de que el escondite le permite pasar a una rama en la que está trabajando, también le permite cambiar las ramas antes de haber comprometido todo. Esto no es útil para el "cherry-picking" en el sentido habitual sino para el "cherry-picking" en su copia de trabajo.
F.ex., mientras trabajo en una rama de características, a menudo notaré errores menores o impurezas cosméticas en el código que no son relevantes para esa rama. Bueno, solo arreglo esos de inmediato. Cuando llega el momento de cometer, me comprometo selectivamente con los cambios relevantes, pero no con los arreglos y los cosméticos. En cambio, guardo esos, lo que me permite cambiar a mi rama de arreglos menores en establo, donde luego puedo aplicar el alijo y comprometer cada arreglo menor por separado. (Dependiendo de los cambios en cuestión, también esconderé algunos de ellos otra vez, para cambiar a una rama de función diferente, donde aplique esos.)
Esto me permite profundizar en el modo de programación cuando estoy trabajando, y no se preocupe por la adecuada biblioteconomía de mi código. Luego, cuando tomo un descanso mental, puedo regresar y ordenar cuidadosamente mis cambios en todos los estantes correctos.
Si el alijo no fuera global, este tipo de flujo de trabajo sería mucho más difícil de hacer.
Git le falta algo, que le permite asociar cambios no confirmados con una bifurcación (o cabecera). Esto se hace evidente cuando tienes trabajo en progreso para más de una rama a la vez. Como las respuestas aquí señalan, stash tiene aplicaciones útiles basadas en sus características, no obstante. 'git stash-here' ¿alguien? –