Add git-stash section

This commit is contained in:
Marcel Ribeiro-Dantas 2022-07-17 14:54:21 +02:00 committed by Marcel Ribeiro-Dantas
parent f91d4a5578
commit 13d6f6e884
No known key found for this signature in database
GPG Key ID: BA6A9BC3398907E0

View File

@ -451,6 +451,74 @@ $ git push -u origin master
$ git push
```
### stash
O objetivo desse comando do git é pegar o estado "sujo" do seu diretório de
trabalho, que não está pronto (staged), e salvá-lo em um outro lugar para que
você possa trabalhar no seu repositório do zero, mas sem perder as mudanças que
fez. Em qualquer outro momento que você quiser, você pode trazer de volta as
alterações que você tirou dali com oc omando stash.
Digamos que você tem feito algumas alterações no seu repositório, mas agora
você quer realizar um pull do repositório remoto. Como você tem alterações não
commitadas no seu diretório (ele está "sujo"), você não irá conseguir realizar
o `git pull` com sucesso. Mas você pode executar o `git stash` para salvar
essas alterações e conseguir realizar o pull. Depois, você traz de volta.
```bash
$ git stash
Saved working directory and index state \
"WIP on master: 049d078 added the index file"
HEAD is now at 049d078 added the index file
(To restore them type "git stash apply")
```
Agora você irá conseguir realizar o pull!
```bash
git pull
```
`...changes apply...`
Verifique se está tudo OK com o `git status`
```bash
$ git status
# On branch master
nothing to commit, working directory clean
```
É possível verificar as alterações que você guardou com cada uso do comando
`git stash` com o `git stash list`. Como os usos desse comando são guardados
como em uma pilha, os usos mais recentes estarão no topo.
```bash
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
```
Agora vamos trazer o que havíamos salvado com o `git stash` de volta para o
diretório de trabalho.
```bash
$ git stash pop
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
#
# modified: index.html
# modified: lib/simplegit.rb
#
```
`git stash apply` faz a mesma coisa
Agora podemos voltar a trabalhar no que havíamos deixado de lado!
[Additional Reading.](http://git-scm.com/book/en/v1/Git-Tools-Stashing)
### rebase (cautela!)
Pega em todas as alterações que foram registadas numa branch e volta a