O armazenamento temporário é um passo antes do processo de confirmação no git. Ou seja, um commit no git é realizado em duas etapas: staging e commit atual.
Contanto que um changeset esteja na área de preparação, o git permite que você o edite da maneira que preferir (substitua os arquivos testados por outras versões de arquivos preparados, remova as alterações da preparação, etc.).
Tempo da metáfora quebrada:
Considere um cenário onde você chama os motores para obter suas coisas do seu antigo apartamento para o seu novo apartamento. Antes de fazer isso, você passará por suas coisas, decidirá o que levará com você e o que jogará fora, coloque-o em sacos e deixe-o no corredor principal. Os motores simplesmente vêm, pegam as sacolas (já embaladas) do corredor e as transportam.
Neste exemplo, tudo até que os impulsionadores obtenham suas coisas, é encenado: você decide o que vai aonde, como empacotá-lo e assim por diante (por exemplo, você pode decidir que metade de suas coisas serão jogadas fora antes mesmo de chegarem lá - isso é parte de estadiamento).
De um ponto de vista técnico, o teste também suporta confirmações transacionais, dividindo todas as operações em algo que pode falhar (temporariedade) e o que não pode falhar (commit):
O commit no git é implementado transacionalmente, após o staging ser bem sucedido. Várias etapas no teste podem falhar (por exemplo, você precisa confirmar, mas seu HDD está 99.9999% cheio e o git não tem espaço para realizar um commit). Isso falhará no teste (seu repositório não será corrompido por um commit parcial) e o processo de teste não afetará seu histórico de commit (ele não corromperá seu repositório em caso de erro).