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
Abra ou encerre o Terminal no Mac — Suporte da Apple