¿Cómo get files de una confirmación, a una carpeta externa desde mi repository?

Necesito get los files de 2 commits (de mi elección) y ponerlos en 2 carpetas diferentes fuera de mi repository, haré un process, y luego necesitaré poder borrar esas 2 carpetas.

Ya bash algunos commands, git -clone no funciona para mí, no necesito el repository completo, solo ciertos commits (una carpeta para cada uno), y tengo algunas cosas que intentan borrar la carpeta.

Otro que probé fue el git archive pero la salida no funcionó para mí. Necesito los files de la misma manera que el repository.

El que estuvo bastante cerca fue git --work-tree=<path> checkout <sha> -- . pero este command estaba escondiendo los files (que tiene diferencias) en mi repository, y no quiero eso.

Es posible hacer lo que quiero, sin hacer cambios en mi repository?

git show <commit>:<file_path> > <path> .

Por ejemplo, git show HEAD:foo/bar.c > ~/build/foo/bar.c , git show master:foo/bar.c > ~/backup/bar.c

git show puede ser reemplazado por git cat-file -p aquí.

Si desea el repository completo, puede usar git worktree si tiene una versión más nueva. Simplemente revisa una revisión de otra carpeta en lugar del tree de trabajo actual, por lo que no tiene que hacer otro clon.

Por ejemplo, git worktree add master ~/foo/ , que se ejecuta en ~/foo/ mientras el tree de trabajo actual no cambia.

Desde su directory de repository que se llama project :

 mkdir ../foo && cd ../foo && echo 'gitdir: ../project/.git' >.git && git checkout <commit-ish> -- . 

podría producir el resultado que deseas.