Recuperar parte de un file en un antiguo commit

Aquí está el escenario.

commit -am "1 create book.txt commit -am "2 add content to book.txt" commit -am "3 delete content from book.txt and replace it new content" 

Ahora queremos recuperar el contenido que agregamos en el compromiso 2 y eliminado en el compromiso 3. Hemos intentado fusionar el compromiso 2 con el compromiso 3, pero esto no funciona. Por supuesto, podemos simplemente verificar la confirmación 2, copyr el contenido que hemos eliminado y volver a pegarlo una vez que hayamos realizado la confirmación 3. ¿Hay alguna forma de hacerlo, con algo similar a merge, rebase o patch? El resultado final debe tener tanto el contenido que agregamos en el compromiso 2 como el contenido que agregamos en el compromiso 3.

Eso es exactamente para lo que es Cherry-Pick.

Use git cherry-pick commit-2 para reproducir que se comprometan en la parte superior del estado actual.