Costumo adiar o trabalho para depois, depois outras coisas aparecem e, algumas semanas depois, quero inspecionar o stash e descobrir quais mudanças ele faria se eu o aplicasse à árvore de trabalho em seu estado atual.
Eu sei que posso fazer uma diferença de git no stash, mas isso me mostra todas as diferenças entre a árvore de trabalho e o stash, enquanto eu só estou interessado em saber o que o stash aplicar vai mudar.
Como posso fazer isso?
git stash show -p stash@{1} >~/.diff && vim ~/.diff
(não precisa servim
. nenhum editor de texto, contanto que o seu editor de texto possua sintaxe, destacando o suporte àdiff
saída).Respostas:
git stash show
mostrará os arquivos que foram alterados no seu esconderijo mais recente. Você pode adicionar a-p
opção para mostrar o diff.Se o stash no qual você estiver interessado não for o mais recente, adicione o nome do stash ao final do comando:
fonte
fatal: unable to create temp-file: Invalid argument
alguma idéia do porquê?git stash show -p stash@{0}
para ver um estoque específico. 0 mostra o último tom, 1 o último último .. etc.git stash list
mostrará todo o disponível.git stash show -p 'stash@{0}'
)git stash show -p stash@{0}> stash.txt
Para visualizar uma lista atual de stash:
Você verá uma lista como esta:
Para visualizar o diff em qualquer um desses stashes:
fonte
Sou fã da
gitk
interface gráfica do usuário para visualizar repositórios git. Você pode ver o último item escondido:Você também pode usar a visualização de qualquer uma das suas alterações ocultas (conforme listado por
git stash list
). Por exemplo:Na captura de tela abaixo, você pode ver o stash como uma confirmação no canto superior esquerdo, quando e de onde veio no histórico de confirmação, a lista de arquivos modificados na parte inferior direita e a diferença linha a linha na parte inferior. -esquerda. O tempo todo ainda está escondido.
fonte
stash@{X}
valores na linha de comando para ver mais resultados de uma só vez, mas não encontrei uma maneira simples de dizer 'mostrar todas as entradas stash' no gitk.gitk stash
parece ser uma abreviação de #gitk stash@{0}
gitk `git stash list --pretty=format:%gd`
e, em seguida, procure por "WIP ativado " para pular para o próximo stash.gitk --reflog
permite ver todos os esconderijos e muito mais.Para visualizar todas as alterações em um stash não popped:
Para visualizar as alterações de um arquivo específico em uma ocultação não removida:
fonte
-p
é a abreviação de--patch
. A opção vemgit-diff
. Se você preferir o formulário longo, pode escrevergit stash show --patch
.Além da recomendação do gitk em É possível visualizar o conteúdo do stash no git? você pode instalar o tig e ligar
tig stash
. Este programa de console gratuito / aberto também permite escolher qual esconderijo compararfonte
P
e!
chaves respectivamente.gitk
, é relativamente fácil hackear para mostrar todos os esconderijos .Eu uso isso para ver todos os meus stashes com destaque para as diferenças de cores (no Fedora 21):
(Adaptado do Git: veja o que há em um esconderijo sem aplicar o esconderijo )
fonte
Quando essa pergunta foi feita pela primeira vez, isso pode não ter sido uma opção, mas, se você usa o PyCharm, pode usar a
UnStash Changes
ferramenta (VCS-> Git-> UnStash Changes ...). Isso permite que você exiba a lista de alterações ocultas, além de exibir, soltar, limpar ou aplicar (em uma nova ramificação, se desejar):e visualize os arquivos alterados por esconderijo:
assim como diffs por arquivo. Nos diffs, você pode escolher as alterações individuais para aplicar a partir das alterações ocultas no ramo de trabalho (usando a divisa esquerda):
fonte
Você pode visualizar a lista de todos os stashes pelo seguinte comando:
O estoque mais novo é o primeiro.
Você pode simplesmente selecionar o índice
n
de esconderijo fornecido na lista acima e usar o comando a seguir para visualizar os detalhes escondidosSimilarmente,
Você também pode verificar o diff usando o comando:
fonte
Sim, a melhor maneira de ver o que é modificado é salvar em um arquivo assim:
fonte
Primeiro, podemos fazer uso da lista git stash para obter todos os itens stash:
Em seguida, podemos usar
git stash show stash@{N}
para verificar os arquivos em um esconderijo específicoN
. Se dispararmos, podemos obter:A razão para isso pode ser que a concha esteja consumindo aparelho nos dentes e o git vê
stash@2
e nãostash@{2}
. E para corrigir isso, precisamos usar aspas simples para chaves como:fonte
Ver lista de alterações ocultas
Para visualizar a lista de arquivos alterados em um stash específico
Para visualizar um arquivo específico no stash
fonte
Mostrar todos os stashes
Apenas nomes de arquivo:
Conteúdo completo do arquivo em todos os stashes:
Você obterá um resultado diferenciado colorido com o qual poderá paginar space ( para frente ) e b( para trás ), e qfechar o pager para o stash atual. Se você preferir tê-lo em um arquivo, acrescente
> stashes.diff
o comando.fonte
Além das respostas existentes, que sugerem o uso (para mostrar a diferença entre o penúltimo e o último stash)
Observe que na
git-stash
documentação está escrito quePortanto, também é possível usar (isso é equivalente ao comando acima)
O que também deve evitar alguns problemas do Powershell .
fonte
Eu gosto de como
gitk
mostrar exatamente o que não foi rastreado ou que está no índice, mas, por padrão, ele mostrará os stash "commits" no meio de todos os outros commits no branch atual.O truque é executar o gitk da seguinte maneira:
(A citação existe para fazê-lo funcionar no Powershell, mas dessa forma ainda deve funcionar em outros reservatórios.)
Se você procurar esta sintaxe na página de ajuda de gitrevisions, encontrará o seguinte:
Aparentemente, isso colocará o gitk de tal maneira que apenas os pais imediatos do commit selecionado sejam mostrados, e é exatamente isso que eu gosto.
Se você quiser levar isso adiante e listar todos os stashes, execute:
(Essas aspas simples dentro dos backticks são necessárias para apaziguar Bash, caso contrário, ela reclama do ponto de exclamação)
Se você estiver no Windows e estiver usando o cmd ou o Powershell:
fonte
O comando a seguir pode ser usado para extrair o diff da alteração oculta novamente em qualquer outra ocultação ou confirmação ou ramificação ou HEAD.
Vamos ver como podemos usar cada um dos comandos mencionados acima.
Para obter a diferença entre o stash mais stash @ {0} e a ramificação principal:
$ git diff stash @ {0} mestre
Exiba apenas os nomes dos arquivos e não as alterações:
$ git diff - stash somente com nome @ {0} master
Veja o diff entre stashes selecionados para um arquivo selecionado:
$ git diff stash @ {0} ^ 1 stash @ {0} -
Veja a diferença entre os dois stashes mais recentes:
$ git difftool stash @ {0} stash @ {0} ^ 1
git difftool --dir-diff stash @ {0} stash @ {0} ^ 1
Resumo:
Comandos úteis para extrair o diff do stash selecionado stash show, git show, git diff, git difftool.
Veja a diferença usando o comando git stash show,
git stash show -p stash @ {0}
Veja as mudanças no stash usando o comando git show,
git show stash @ {1}
Veja a diferença entre o stash mais recente e a confirmação selecionada usando o comando git diff,
git diff stash @ {0}
Referências:
https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/
https://git-scm.com/docs/git-show
https://git-scm.com/docs/git-stash
fonte