O manual do usuário do Magit inclui dois conjuntos de comandos "stashing": comandos em minúsculas salvam um stash e comandos em maiúsculas salvam um instantâneo . Depois de consultar o Google, o Stack Overflow e a git-stash(1)
página de manual, ainda não sei qual é a diferença.
Qual é a diferença?
stash
também redefinirá (desfará) as alterações esnapshot
deixará as alterações na área de trabalho (pode ser útil se você deseja reorganizar as confirmações antes de pressionar).Respostas:
As variantes "stash" e "snapshot" criam os mesmos objetos stash. A diferença é que, quando você cria um instantâneo, as alterações ocultas não são removidas dos arquivos na árvore de trabalho e / ou no índice. (Assim como quando você tira uma foto de seus amigos se divertindo - isso também não os faz desaparecer ;-)
Isso é planejado como um tipo de mecanismo de backup. Digamos que você esteja executando uma refatoração complicada e que acabou de testar e o código modificado ainda parece funcionar, mas ainda não foi concluído. Agora seria um bom momento para criar um instantâneo, para que você tenha algo a que voltar, se você estragar mais tarde.
É claro que você pode criar um commit "wip" temporário, diretamente no ramo em que está trabalhando, para realizar o mesmo. Geralmente é o que eu faço.
E você também pode automatizar o processo de gravação de trabalhos em andamento, ativando os modos Wip . Eu tenho esses modos ativados como uma rede de segurança, mas ainda crio confirmações wip diretamente na ramificação atual ou crio um instantâneo. É mais fácil trabalhar com eles do que os wip refs.
Observe que o Magit vem com sua própria implementação de stash, escrita em Elisp. Isso foi necessário para implementar as variantes de captura instantânea e as variantes de stash somente de árvore de trabalho e apenas de índice. O Git não fornece nenhuma dessas variantes.
fonte