Git

Git Stash com nome

Git Stash com nome

Como usar o Git para esconder suas alterações com o nome associado e encontrá-lo depois

Os desenvolvedores geralmente precisam realizar várias tarefas ao mesmo tempo. Você pode estar trabalhando em um novo recurso e pode haver uma solicitação para corrigir um bug. Ou você pode ser o desenvolvedor líder em vários projetos.

Quando você está alternando entre as tarefas, às vezes você não quer comprometer o trabalho inacabado. Nesses casos, o comando git stash pode ser de grande ajuda. Ele permite que você empilhe suas alterações e depois volte ao trabalho inacabado sem adicionar commits desnecessários aos seus repositórios git.

Um fluxo de trabalho para Git Stash

Vamos inicializar um branch master git e enviar um arquivo ReadMe.TXT.

$ mkdir my_project
$ cd my_project /
$ git init
$ touch ReadMe.TXT
$ git add -A
$ git commit -m "Inicializar"

Agora vamos adicionar outro arquivo chamado.txt para o branch master.

$ touch a.TXT
$ git add -A
$ git commit -m "Adicionou um.TXT"

Se você verificar o histórico, verá:

$ git log --oneline
d79f7aa Adicionado um.TXT
9434d7e Inicializar

Agora vamos criar um branch feature1 e adicionar um b.arquivo txt:

$ git branch feature1
$ git checkout feature1
$ touch b.TXT
$ git add -A
$ git commit -m "Adicionado b.TXT"

Abra seu b.arquivo txt em um editor e coloque na linha:

Estou prestes a mudar isso para ..

E salve o arquivo. Se você verificar seu status git, verá o seguinte:

$ git status
No ramo feature1
Mudanças não preparadas para confirmação:
(use "git add … "Para atualizar o que será comprometido)
(use "git checkout -- … "Para descartar as alterações no diretório de trabalho)
 
modificado: b.TXT
 
nenhuma alteração adicionada ao commit (use "git add" e / ou "git commit -a")

Suponha que, nesta fase, você receba uma solicitação para atualizar o.arquivo txt no branch master. Mas você não terminou com o b.arquivo txt. Se você tentar verificar o branch master, receberá o seguinte erro:

$ git checkout master
erro: suas alterações locais nos arquivos a seguir seriam substituídas pelo checkout:
b.TXT
Por favor, confirme suas alterações ou armazene-as antes de trocar de branch.
Abortando

Mas você não quer comprometer o trabalho inacabado em b.TXT. Você pode usar o git stash nesta situação:

$ git stash
Diretório de trabalho salvo e WIP de estado de índice no recurso 1: 2cfe39b adicionado b.TXT
HEAD está agora em 2cfe39b Adicionado b.TXT

Se você marcar b.txt, deve estar vazio:

$ cat b.TXT
$

Se você verificar o estoque, verá:

$ git stash list
stash @ 0: WIP em feature1: 2cfe39b adicionado b.TXT

Se você tentar verificar o branch master, deverá ser capaz de fazer isso agora:

$ git checkout master
Mudou para branch 'master'

Suponha que você faça as alterações necessárias no mestre e volte ao branch feature1:

$ git checkout feature1

Seu b.txt ainda está vazio:

$ cat b.TXT
$

Mas se você obtiver as alterações do stash usando o seguinte comando:

$ git stash se aplica
 
No ramo feature1
Mudanças não preparadas para confirmação:
(use "git add … "Para atualizar o que será comprometido)
(use "git checkout -- … "Para descartar as alterações no diretório de trabalho)
 
modificado: b.TXT
 
nenhuma alteração adicionada ao commit (use "git add" e / ou "git commit -a")

O comando stash apply pegou as alterações armazenadas e as aplicou a b.arquivo txt
Você pode completar seu trabalho em b.txt minha modificando a linha

Estou prestes a mudar isso para ..


Para

Estou prestes a mudar para CONCLUÍDO

Agora vá em frente e confirme suas alterações:

$ git add -A
$ git commit -m "Modificado b.TXT"

Aplicar um estoque não o limpa automaticamente do estoque. Você deve limpá-lo manualmente:

$ git stash drop
Refs / stash descartados @ 0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

Por que Git Stash com nome?

O git stash é uma pilha. Então você pode continuar empilhando suas mudanças.

Suponha que você adicione “X” a b.txt, esconda-o, adicione um “Y” a b.txt, esconda-o e adicione um “Z” a b.txt e esconda-o. Se você verificar o histórico de stash, verá algo assim:

$ git stash list
[email protegido] 0: WIP no recurso1: 2d6f515 Modificado b.TXT
[e-mail protegido] 1: WIP no recurso 1: 2d6f515 Modificado b.TXT
[email protegido] 2: WIP no recurso 1: 2d6f515 Modificado b.TXT

Você não tem como saber qual estoque tem qual mudança. Quando você está escondendo, você pode usar a opção salvar para colocar comentários. Você pode usar os comentários para anexar um nome ao seu estoque e torná-los reconhecíveis:

$ git stash save "X"
Diretório de trabalho salvo e estado de índice em feature1: X
HEAD está agora em 2d6f515 Modificado b.TXT

Para adicionar a modificação “X”, “Y” e “Z”, você pode obter o seguinte em seu estoque usando a opção de salvar para cada estoque:

$ git stash list
stash @ 0: No feature1: Z
stash @ 1: No feature1: Y
stash @ 2: No recurso1: X

Agora você tem um nome para cada mudança que guardou. Infelizmente, você não pode usar o nome para recuperar o estoque. Você terá que usar o número do estoque. Suponha que você deseja obter a sua mudança “Y”. Você vê que [e-mail protegido] 1 é Y. Portanto, você pode aplicar essa mudança ao seu ramo atual:

$ git stash apply stash @ 1

E seu b.txt deve ter as alterações de [e-mail protegido] 1.

Você pode usar o mesmo método para deixar um estoque. Suponha que você perceba que não precisa mais do X stash. Você pode simplesmente usar o seguinte comando para excluir esse esconderijo:

$ git stash drop stash @ 2

E o estoque deve ter sumido:

$ git stash list
stash @ 0: No feature1: Z
stash @ 1: No feature1: Y

Lembre-se de que se você usar as opções aplicar e descartar sem nenhum parâmetro, ele usará o topo da pilha ([e-mail protegido] 0).

Conclusão

O comando git stash é uma maneira poderosa de gerenciar seu espaço de trabalho. Dominar este comando irá ajudá-lo a trabalhar com mais eficiência.

Um estudo mais aprofundado:
  • https: // git-scm.com / book / en / v1 / Git-Tools-Stashing
Referências:

Stack Overflow: how-to-name-and-retrieve-a-stash-by-name-in-git

Melhores jogos de linha de comando para Linux
A linha de comando não é apenas sua maior aliada ao usar o Linux - ela também pode ser uma fonte de entretenimento porque você pode usá-la para jogar ...
Melhores aplicativos de mapeamento de gamepad para Linux
Se você gosta de jogar no Linux com um gamepad em vez de um teclado típico e sistema de entrada de mouse, existem alguns aplicativos úteis para você. ...
Ferramentas úteis para jogadores de Linux
Se você gosta de jogar no Linux, é provável que tenha usado aplicativos e utilitários como Wine, Lutris e OBS Studio para melhorar a experiência de jo...