Você executou git add . e incluiu um arquivo que precisa ficar para outro commit. Tire apenas esse arquivo do stage com git restore --staged. O comando restaura a versão do índice a partir de HEAD e deixa a cópia de trabalho com suas alterações.

git diff --cached -- caminho/arquivo.ts
git restore --staged -- caminho/arquivo.ts
git diff -- caminho/arquivo.ts
git status --short

Para um arquivo novo, o último comando pode mostrá-lo como não rastreado. Isso é esperado quando o arquivo ainda não existe em HEAD. Para um arquivo que já estava versionado, git diff mostra as edições que ficaram na cópia de trabalho.

Quando só uma parte deve sair do stage

Use git restore --staged --patch para escolher trechos. Revise git diff --cached antes de confirmar o commit. A opção --staged faz diferença aqui. Sem ela, git restore normalmente atua na cópia de trabalho e pode sobrescrever mudanças locais.

Documentação de referência · Como encontrar um commit que quebrou o código com git bisect

O índice e a cópia de trabalho são estados separados

O stage contém a versão que o próximo commit incluiria. A cópia de trabalho pode conter uma versão mais nova, ainda não preparada. git restore --staged atualiza o índice a partir de HEAD e preserva a cópia local; por isso, a mudança continua visível em git diff. Não confunda esse fluxo com git restore caminho, que pode substituir a cópia de trabalho pelo conteúdo do índice.

Para um arquivo novo que ainda não está em HEAD, remover do stage volta a deixá-lo como não rastreado. O conteúdo do arquivo permanece no disco. Se o próximo commit deve incluir apenas parte das mudanças, use o modo patch e examine o diff staged depois de cada seleção. Um hunk pode juntar várias linhas relacionadas, então confira o resultado em vez de presumir que o comando escolheu exatamente o que você tinha em mente.

Prepare o commit por intenção

Um commit pequeno deve refletir uma mudança coerente. Após tirar um arquivo acidental, examine tanto git diff --cached quanto git diff. Se o caminho tiver espaços, coloque-o entre aspas e use -- antes dos caminhos para evitar que uma opção seja interpretada como argumento de arquivo. O comando opera em relação ao repositório atual, então confira git status quando estiver em um subdiretório de um monorepo.

Esse procedimento não apaga as alterações, mas uma limpeza posterior de arquivos não rastreados pode fazê-lo. Não use git clean como continuação automática de restore --staged. Verifique cada estado e proteja o trabalho que ainda não foi comprometido.

Se você já tinha preparado parte de um arquivo, editar o mesmo trecho depois do stage cria duas versões diferentes: uma no índice e outra na cópia de trabalho. git diff --cached mostra a primeira em relação ao commit atual; git diff mostra a segunda em relação ao índice. Revise as duas antes de preparar novos hunks. Esse cuidado evita incluir por engano mudanças que foram feitas depois da seleção inicial.