Git School · FluxGit

Pontos de restauração e stash no Git

FluxGit ·

Os blocos são casos diferentes, não um script único. Escolha o caso do seu repositório. Substitua branches, caminhos e VERIFIED_COMMIT antes de usar. Comandos de cancelamento só valem para sua operação ativa; não execute ambas as alternativas.

Resposta curta

Pontos de restauração do FluxGit registram estados para recuperar operações de histórico cobertas. Um stash manual guarda mudanças locais para depois; é um fluxo diferente.

Exemplo e condições

O tutorial G12 troca de branch com alterações tracked pendentes. Arquivos untracked permanecem no diretório, a menos que você os inclua explicitamente.

Inspecione antes de alterar

Inspecione git status --short e git diff. Decida o que guardar antes da troca; um diretório limpo não é um backup permanente.

git status --short
git diff

Mantenha referência ou checkout separado

Crie um stash manual com uma mensagem reconhecível. git stash push guarda mudanças tracked; use -u apenas para incluir também arquivos untracked.

git stash push -m "school/manual-before-switch"
git stash list

Primeiro fluxo

Confira git stash list e mude para a branch desejada. Ao voltar, revise o contexto antes de aplicar a entrada selecionada.

git switch target-branch

Escolha o outro resultado deliberadamente

git stash apply mantém a entrada. git stash pop só a remove depois de uma aplicação bem-sucedida; com conflito, a entrada é preservada.

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

Limites e exceções

Pontos automáticos cobrem reset, rebase, cherry-pick, revert e merge pelos caminhos protegidos. Discard e clean não criam um Flux restore point universal.

Conflitos e limpeza

Se houver conflito, revise e resolva os arquivos conscientemente. Não repita pop nem apague a entrada para esconder trabalho pendente.

Confira o resultado

Confira arquivos, índice e testes após aplicar o stash. Remova uma entrada apenas quando confirmar que o trabalho desejado foi preservado.

git status --short
git diff
git diff --cached

Perguntas frequentes

O stash não é publicado automaticamente por push e não substitui um backup. A recuperação depende de o estado local relevante continuar disponível.

Revise a operação no FluxGit

Safety Timeline reúne movimentos do reflog, riscos e pontos de restauração. Os dados desses pontos ficam locais; use o preview e o contexto de recuperação específico da operação.

Referências oficiais do Git

Git School · 1:51

Trocar de branch com trabalho inacabado: git stash, visualmente

Guarde uma edição rastreada com git stash, dê um nome, troque de branch e volte para usar pop. Veja por que arquivos não rastreados permanecem e a diferença entre apply e um pop bem-sucedido. Inclui os comandos no terminal.

Trocar de branch com trabalho inacabado: git stash, visualmente
Narração em inglês. Há legendas manuais no YouTube em 11 idiomas. Esta transcrição está em português brasileiro.

Assistir no YouTube — abre uma nova aba

Gravado em um repositório de teste. Narração em inglês e legendas em português brasileiro.

Ler a transcrição da narração
  1. 00:03 Você está no meio de uma alteração e precisa olhar outra branch agora. Ainda não está pronta para um commit, e você não quer perdê-la.
  2. 00:12 Aqui está a edição inacabada, em app.py.
  3. 00:19 Um stash guarda as alterações rastreadas. Aqui, salva a edição em app.py e a remove da pasta de trabalho. Arquivos não rastreados ficam no disco. Um pop bem-sucedido restaura a edição e remove sua entrada do stash.
  4. 00:36 Escolha Stash current changes e dê um nome que reconheça depois.
  5. 00:48 Troque para a outra branch. A edição rastreada está no stash. O arquivo não rastreado permanece na pasta.
  6. 00:58 Terminou lá. De volta à main.
  7. 01:05 Faça pop do stash. A edição está de volta em app.py, e o stash desapareceu.
  8. 01:15 Apply ou pop? Apply restaura as alterações e mantém a entrada do stash. Pop só remove a entrada se as alterações forem aplicadas com sucesso. Se houver conflitos, o stash é mantido.
  9. 01:29 No terminal: git stash push com uma mensagem, troque de branch e volte, e depois git stash pop.
  10. 01:37 Resumo. O trabalho inacabado vai para uma prateleira, não para um commit incompleto. Próxima aula: organizar seus commits antes do pull request.

Fluxos relacionados

Baixar FluxGit