Para recuperar un solo archivo de un stash en macOS, use git restore con el stash como origen y la ruta del archivo como destino. Esto restaura ese archivo en su árbol de trabajo mientras mantiene disponible la entrada del stash. Primero identifique el stash correcto e inspeccione sus cambios; luego restaure la ruta específica y revise el resultado.

1. Abra Terminal en el repositorio

Abra Terminal desde Spotlight o desde la carpeta Aplicaciones/Utilidades de Finder, y luego cambie al directorio del repositorio con cd. Por ejemplo, escriba cd , arrastre la carpeta del proyecto a la ventana de Terminal para insertar su ruta y presione Retorno. Apple documenta Terminal como la interfaz de línea de comandos de macOS; zsh es su shell predeterminado, aunque un administrador o usuario puede configurar otro shell. Abrir o salir de Terminal en Mac

Confirme que se encuentra en el repositorio deseado y consulte los cambios locales antes de restaurar nada:

git status --short

Restaurar desde un stash puede reemplazar el contenido actual del árbol de trabajo del archivo de destino, por lo que debe guardar o hacer commit de cualquier edición en ese archivo que necesite conservar. Esta operación es selectiva por ruta, pero no es una fusión (merge) ni una copia de seguridad preventiva.

2. Busque e inspeccione el stash

Muestre las entradas disponibles:

git stash list

Git etiqueta la entrada más reciente como stash@{0}, la siguiente como stash@{1}, y así sucesivamente. Elija la entrada que contiene la versión que desea. Si las descripciones no son claras, inspeccione una candidata como un parche:

git stash show --patch 'stash@{0}'

Reemplace stash@{0} por la entrada que haya identificado. Poner la referencia entre comillas es útil en zsh porque las llaves forman parte de la sintaxis del shell. Git documenta stash show para inspeccionar un stash y stash apply para aplicar una entrada completa; el siguiente comando, en cambio, selecciona una sola ruta de la instantánea del stash. Documentación de git-stash

3. Restaure solo el archivo

Ejecute git restore con la referencia del stash como origen y la ruta relativa al repositorio después de --:

git restore --source='stash@{0}' -- 'src/config.json'

Reemplace src/config.json con la ruta exacta que necesita, utilizando barras inclinadas hacia adelante y escribiéndola en relación con la raíz del repositorio. Las comillas también evitan que el shell interprete espacios y caracteres comodín. La opción --source selecciona un commit o árbol como origen del contenido; el pathspec limita qué ruta restaura Git. Dado que se omite --staged, Git restaura el árbol de trabajo y no modifica el índice. Documentación de git-restore

Ahora revise el cambio:

git status --short
git diff -- 'src/config.json'

La versión restaurada es, en el caso habitual, un cambio no preparado (unstaged) en el árbol de trabajo con respecto al índice. Si el archivo ya estaba preparado en el área de preparación (staged) con anterioridad, compare deliberadamente las versiones del árbol de trabajo y del índice antes de prepararlo o hacer commit. El stash permanece en la lista de stashes porque git restore lee de él sin aplicar ni eliminar la entrada completa.

Cuándo requiere ajustes este flujo de trabajo

La ruta debe existir en la instantánea del árbol de trabajo del stash. Si no es así, Git puede informar que el pathspec no coincidió; verifique el parche y el nombre del archivo, incluidas las mayúsculas y minúsculas. Una ruta rastreada que esté ausente en el árbol de origen puede eliminarse para que el destino coincida con dicho árbol, así que tenga especial cuidado si el stash registra una eliminación. La documentación de restore de Git describe este comportamiento. Documentación de git-restore

Esta receta es para un archivo representado en la instantánea del árbol de trabajo rastreado del stash. Los stashes creados con -u o -a también pueden contener archivos sin seguimiento (untracked) o ignorados, almacenados por separado; git restore --source='stash@{0}' no aborda esa instantánea independiente como si fuera el árbol principal del stash. Inspeccione dichas entradas con atención y utilice los controles documentados de inspección y recuperación de stash de Git en lugar de asumir que este comando los recuperará. Documentación de git-stash

Si el objetivo es aplicar líneas seleccionadas en lugar de todo el archivo, git restore -p ofrece selección interactiva de fragmentos (hunks), pero confirme el comportamiento y el origen para su versión instalada de Git antes de confiar en ello. Para restaurar tanto la versión preparada como la del árbol de trabajo de un archivo, git restore admite tanto --staged como --worktree; esto también modifica el índice, así que utilícelo solo cuando esa sea la intención. Documentación de git-restore

La secuencia práctica es: identificar el stash, confirmar el archivo en su contenido, restaurar una ruta relativa al repositorio desde el stash elegido e inspeccionar el diff antes de continuar. Eso mantiene el stash intacto y limita la operación de restauración a la ruta indicada.

Fuentes