Para recuperar um único arquivo de um stash no macOS, use git restore com o stash como origem e o caminho do arquivo como destino. Isso restaura esse arquivo na sua árvore de trabalho, deixando a entrada do stash disponível. Primeiro, identifique o stash correto e inspecione as alterações; em seguida, restaure o caminho específico e revise o resultado.

1. Abra o Terminal no repositório

Abra o Terminal pelo Spotlight ou pela pasta Aplicativos/Utilitários do Finder e, em seguida, navegue até o diretório do repositório com cd. Por exemplo, digite cd , arraste a pasta do projeto para a janela do Terminal para inserir o caminho e pressione Return. A Apple documenta o Terminal como a interface de linha de comando do macOS; o zsh é o seu shell padrão, embora um administrador ou usuário possa configurar outro shell. Abra ou encerre o Terminal no Mac

Confirme que você está no repositório correto e veja as alterações locais antes de restaurar qualquer coisa:

git status --short

Restaurar a partir de um stash pode substituir o conteúdo atual do arquivo de destino na árvore de trabalho; portanto, salve ou faça commit de quaisquer edições desse arquivo que precise manter. Esta operação é seletiva por caminho, mas não é uma mesclagem (merge) nem um backup de segurança.

2. Encontre e inspecione o stash

Liste as entradas disponíveis:

git stash list

O Git rotula a entrada mais recente como stash@{0}, a seguinte como stash@{1}, e assim por diante. Escolha a entrada que contém a versão desejada. Se as descrições não forem claras, inspecione um candidato como um patch:

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

Substitua stash@{0} pela entrada identificada. Colocar a referência entre aspas é útil no zsh porque as chaves têm significado sintático no shell. O Git documenta stash show para inspecionar um stash e stash apply para aplicar uma entrada inteira; o comando abaixo, em vez disso, seleciona um único caminho a partir do snapshot do stash. Documentação do git-stash

3. Restaure apenas o arquivo

Execute git restore com a referência do stash como origem e o caminho relativo ao repositório após --:

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

Substitua src/config.json pelo caminho exato necessário, usando barras normais e escrevendo-o de forma relativa à raiz do repositório. As aspas também evitam que espaços e caracteres curinga sejam interpretados pelo shell. A opção --source seleciona um commit ou uma árvore como fonte do conteúdo; o pathspec limita qual caminho o Git restaura. Como --staged foi omitido, o Git restaura a árvore de trabalho e deixa o índice inalterado. Documentação do git-restore

Agora revise a alteração:

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

A versão restaurada fica, no caso habitual, como uma alteração não preparada (unstaged) na árvore de trabalho em relação ao índice. Se o arquivo já estava preparado (staged) anteriormente, compare deliberadamente as versões da árvore de trabalho e do índice antes de preparar ou fazer o commit. O stash permanece na lista de stashes porque o git restore lê a partir dele sem aplicar ou remover a entrada completa.

Quando este fluxo de trabalho precisa de ajustes

O caminho precisa existir no snapshot da árvore de trabalho do stash. Se não existir, o Git pode relatar que o pathspec não correspondeu a nada; verifique o patch e o nome do arquivo, incluindo letras maiúsculas e minúsculas. Um caminho rastreado que esteja ausente na árvore de origem pode ser removido para fazer com que o destino coincida com essa árvore; portanto, tenha cuidado redobrado se o stash registrar uma exclusão. A documentação do comando restore do Git descreve esse comportamento. Documentação do git-restore

Esta receita destina-se a um arquivo representado no snapshot da árvore de trabalho rastreada do stash. Stashes criados com -u ou -a também podem conter arquivos não rastreados ou ignorados, armazenados separadamente; git restore --source='stash@{0}' não acessa esse snapshot separado como se fosse a árvore principal do stash. Inspecione essas entradas com atenção e use os controles documentados de inspeção e recuperação do stash do Git em vez de presumir que este comando irá recuperá-los. Documentação do git-stash

Se o objetivo for aplicar linhas selecionadas em vez do arquivo inteiro, git restore -p oferece a seleção interativa de blocos (hunks), mas confirme o comportamento e a fonte para a sua versão instalada do Git antes de depender disso. Para restaurar tanto a versão preparada quanto a da árvore de trabalho de um arquivo, o git restore suporta tanto --staged quanto --worktree; isso também altera o índice, portanto, use apenas quando for essa a intenção. Documentação do git-restore

A sequência prática é: identificar o stash, confirmar o arquivo em seu conteúdo, restaurar um caminho relativo ao repositório a partir do stash escolhido e inspecionar o diff antes de prosseguir. Isso mantém o stash intacto e limita a operação de restauração ao caminho informado.

Fontes