Como Git Stash seu trabalho – a maneira correta

Imagine que você está trabalhando em uma parte de um projeto e começa a ficar confuso. Houve um bug urgente que precisa de sua atenção imediata. É hora de salvar suas alterações e alternar as ramificações. O problema é que você não quer fazer um commit de um trabalho feito pela metade. A solução é git stash .

Armazenar é útil se você precisa alternar rapidamente o contexto e trabalhar em outra coisa, mas está a meio de uma alteração de código e não está totalmente pronto para ser confirmado. De Bitbucket

Stashing

Digamos que você atualmente tenha algumas modificações locais. Execute o git status para verificar seu estado atual:

$ git status 
 # On branch master 
 # Changes to be committed: 
 # (use "git reset HEAD <file>..." to unstage) 
 # modified: index.html 
 # Changes not staged for commit: 
 # (use "git add <file>..." to update what will be committed 
 # modified: assets/stylesheets/styles.css

Você precisa trabalhar nesse bug urgente. Primeiro, você quer salvar as alterações de trabalho inacabadas sem comprometê-las. É aqui que git stash vem como um salvador:

$ git stash 
 Saved working directory and index state WIP on master: 
 bb06da6 Modified the index page 
 HEAD is now at bb06da6 Modified the index page 
 (To restore them type "git stash apply")

Seu diretório de trabalho está limpo e todas as alterações locais não confirmadas foram salvas! Neste ponto, você está livre para fazer novas alterações, criar novos commits , alternar ramificações e executar qualquer outra operação do Git.

Por padrão, os stashes são identificados como “WIP” – trabalho em andamento, no topo da ramificação e confirmação de onde são criados.

Re-aplicando seu estoque

Git stash é um armazenamento temporário. Quando estiver pronto para continuar de onde parou, você pode restaurar o estado salvo facilmente: git stash pop .

Popping your stash remove as alterações do stash e reaplica o último estado salvo. Se você quiser manter as alterações no stash também, você pode usar o git stash apply lugar.

Dicas e truques adicionais

Há algumas outras coisas que você pode fazer com um stash. Vamos dar uma olhada!

  • Salvando stashes
    Salve um stash com uma mensagem : $ git stash save <message> .

Tente isso adicionando a linha CSS alta aos seus estilos e guarde-a com um comentário legal.

  • Armazenando arquivos não rastreados
    Esta é a única maneira de salvar arquivos não rastreados : $ git stash -u ou $ git stash --include-untracked
  • Listar vários stashes
    Quando você git stash ou git stash save , o Git irá criar um objeto commit Git com um nome e então salvá-lo no seu repo. Você pode ver a lista de stashes que você fez a qualquer momento! $ git stash list .
$ git stash list 
 [email protected] {0}: On master: Modified the index page 
 [email protected] {1}: WIP on master: bb06da6 Initial Commit
  • Stashes parciais
    Você pode optar por armazenar apenas um único arquivo, uma coleção de arquivos ou alterações individuais de dentro dos arquivos: $ git stash -p ou $ git stash --patch .

Os testes RSpec são essenciais nos projetos Ruby on Rails, mas podem não estar sempre completos. Esconda apenas a parte que está pronta para ir!

  • Visualizando diffs de stash
    Existem duas maneiras de visualizar um stash: para visualizar o diff completo de um stash – $ git stash show -p ou visualizar apenas o último stash$ git stash show .
$ git stash show 
 index.html | 1 + 
 style.css | 2 ++ 
 2 files changed, 3 insertions(+)
  • Criando uma ramificação do stash
    Crie uma nova ramificação para aplicar suas alterações em $ git stash branch <branch_name> <stash_id> e, em seguida, insira as alterações $ git stash branch <branch_name> <stash_id> nela: $ git stash branch <branch_name> <stash_id> .

Essa é outra maneira de salvar seu estoque antes de prosseguir com o projeto.

  • Remova seu estoque
    Use com cautela, talvez seja difícil reverter. A única maneira de reverter isso é se você não fechou o terminal depois de excluir o stash.
    Se você não precisar mais de um stash específico , poderá excluí-lo com: $ git stash drop <stash_id> . Ou você pode excluir todos os seus stashes do repositório com: $ git stash clear .

Espero que este artigo tenha ajudado você a entender melhor como funciona o stashing. Não deixe de testá-lo!