Cómo progtwigr git checkout un file parcialmente

Esto es lo que estoy haciendo. agregue un enlace precompromiso usando scripts npm, un repository de ejemplo

"is-commitable": "git status | grep 'Changes to be committed:'", "stash-pop": "git stash pop >> /dev/null", "stash-unstaged": "git stash save -k --include-untracked 'unstaged-stash' >> /dev/null", "check-commitable": "npm run is-commitable || (npm run stash-pop && exit 1)", "lint-staged": "(eslint . --fix && git add .) || (npm run stash-pop && exit 1)", "recheck-commitable": "npm run check-commitable", "stash-linted": "git stash save 'linted-stash' >> /dev/null", "stash-pop-unstaged": "git stash pop stash@{1}", "stash-pop-linted": "git read-tree stash && git stash drop", "clean-lint-staged": "(lint-staged >> /dev/null) || exit 0" 

Ejemplo

  1. tener dos líneas de código comprometido:

     line1 line2 
  2. hacer algunos cambios:

     * line1-changed * line2-changed 
  3. parcialmente agregue uno de ellos:

     - line1 + line1-changed * line2-changed 
  4. ejecutar commit y pre-commit hook se activa

    • escondido-unstaged

       - line1 + line1-changed line2(changed part been stashed in unstaged-stash) 
    • pelusa puesta en escena

       - line1 + line1-fixed line2(changed part been stashed in unstaged-stash) 
    • escondido

       line1(changed and fixed part been stashed in linted-stash) line2(changed part been stashed in unstaged-stash) 
    • stash-pop-unstaged

       line1(changed and fixed part been stashed in linted-stash) * line2-changed 
    • stash-pop-linted

       - line1 + line1-fixed * line1-changed * line2-changed 
    • clean-lint-stage

       - line1 + line1-fixed * line2-fixed 

Problema

Los últimos 2 pasos no son perfectos.

Resultado Esperado

Yo quería conseguir

 - line1 + line1-fixed * line2-changed 

Resultados actuales

Pero ahora solo puedo get

 - line1 + line1-fixed * line1-changed * line2-changed 

o

 - line1 + line1-fixed * line2-fixed 

Necesitas ayuda

Entonces, ¿puedo encontrar la manera de progtwigr programáticamente git checkout un file solo las líneas por etapas?

O deje caer el último paso para encontrar una manera de corregir el último 2º paso