Sei que StackOverflow não é o lugar para respostas baseadas em opinião, mas na verdade tenho uma boa opinião sobre quando arquivar alterações com um estoque.
Você não quer comprometer suas alterações experimentais
Quando você faz mudanças em sua área de trabalho / árvore de trabalho, se você precisa realizar qualquer operação baseada em ramificação, como mesclar, enviar, buscar ou puxar, você deve estar em um ponto de confirmação limpo. Portanto, se você tiver alterações no espaço de trabalho, precisará confirmá-las. Mas e se você não quiser cometê-los? E se eles forem experimentais? Algo que você não quer fazer parte do seu histórico de commits? Algo que você não quer que outras pessoas vejam ao enviar para o GitHub?
Você não quer perder as alterações locais com um hard reset
Nesse caso, você pode fazer uma reinicialização a frio. Mas se você fizer uma reinicialização a frio, você perderá todas as alterações da árvore de trabalho local porque tudo será sobrescrito para onde estava no momento do último commit e você perderá todas as suas alterações.
Então, quanto à resposta de 'quando você deve esconder', a resposta é quando você precisa voltar a um ponto de confirmação limpo com uma árvore / índice / confirmação sincronizada, mas você não quer perder suas mudanças locais em o processo. Apenas arquive suas mudanças em um estoque e você estará bem.
E uma vez que você tenha feito seu stash e então mesclado ou puxado ou empurrado, você pode apenas stash pop ou aplicar e você está de volta ao ponto de partida.
Git stash e GitHub
O GitHub está constantemente adicionando novos recursos, mas a partir de agora, agora há uma maneira de salvar um estoque lá. Novamente, a ideia de um esconderijo é que seja local e privado. Ninguém mais pode espiar seu estoque sem acesso físico à estação de trabalho. Da mesma forma que o git reflog é privado e o git log é público. Provavelmente não seria privado se fosse enviado ao GitHub.
Um truque pode ser fazer um diff em seu espaço de trabalho, verificar o diff em seu repositório git, fazer um commit e então enviar. Então você pode fazer um pull de casa, pegar o diff e depois desenrolar. Mas essa é uma maneira bastante complicada de alcançar esses resultados.
git diff > git-dif-file.diff