Suponha que dois conjuntos de mudanças sejam feitos em um projeto com versão do git. Um cenário é encenado e o outro não.
Eu gostaria de verificar novamente as mudanças em estágios executando meu projeto neste estado (antes do commit). Qual é uma maneira simples de descartar todas as alterações não encenadas e deixar apenas encenadas? Portanto, preciso que as alterações não testadas desapareçam do meu projeto, mas que sejam armazenadas em algum lugar para trabalhos futuros.
Isso soa muito como um git stash
comando. Mas git stash
colocaria as alterações não planejadas e planejadas longe do meu projeto. E não consigo encontrar algo parecido git stash uncached
.
-k
opção) ou complicadas de usar.Respostas:
Atualização 2:
Não sei por que as pessoas estão reclamando desta resposta, parece estar funcionando perfeitamente comigo, para os arquivos não extraídos, você pode adicionar a
-u
sinalizaçãoO comando completo torna-se
git stash --keep-index -u
E aqui está um trecho da
git-stash
ajudaE este é um gif de sua aparência:
Atualizar:
Mesmo sendo esta a resposta selecionada, muitos têm apontado que a [resposta abaixo] (https://stackoverflow.com/a/34681302/292408) é a correta, recomendo dar uma olhada.Testei minha resposta novamente hoje (31/01/2020) contra a versão git
2.24.0
, e ainda acredito que está correta, adicionei uma pequena observação acima sobre os arquivos não rastreados. Se você acha que não está funcionando, mencione também sua versão git.Resposta antiga :
Se a
--keep-index
opção for usada, todas as alterações já adicionadas ao índice permanecem intactas:Da documentação de
git-stash
:Mas, se você deseja apenas verificar visualmente apenas as alterações em estágios, você pode tentar
difftool
:fonte
git stash [-p|--patch]
que parece armazenamento interativo. Emman git stash
"Com --patch, você pode selecionar interativamente blocos do diff entre o HEAD e a árvore de trabalho a serem armazenados."add -p
,checkout -p
ereset -p
nunca tenteistash -p
, obrigado pela dica: DA resposta aceita também esconde mudanças encenadas, como alguns apontaram. Esta é uma maneira de fazer isso sem colocar suas alterações em estágios no estoque.
A ideia é fazer um commit temporário de suas alterações testadas, em seguida, esconder as mudanças não testadas e, em seguida, cancelar o commit do commit temporário:
Neste ponto, você terá um estoque de suas mudanças não planejadas e somente as suas mudanças planejadas estarão presentes em sua cópia de trabalho.
fonte
--keep-index
opção na resposta aceita atual ainda esconde o que está no índice, mas também o mantém no índice. Então ele é duplicado e a hilaridade começa.git add .
etapa pode ser melhoradagit add --all
porque também deve pegar os arquivos em um diretório acima do diretório de trabalho atual.Eu descobri que a resposta marcada não funcionou para mim, já que eu precisava de algo que realmente escondia apenas minhas mudanças não encenadas. A resposta marcada
git stash --keep-index
,, armazena as mudanças encenadas e não encenadas. A--keep-index
parte simplesmente deixa o índice intacto na cópia de trabalho também. Isso funciona para OP, mas apenas porque ele fez uma pergunta ligeiramente diferente daquela para a qual ele realmente queria a resposta.A única maneira verdadeira que encontrei de esconder mudanças não planejadas é não usar o esconderijo:
git checkout -- .
também funcionará em vez deapply -R
.Trabalho Trabalho trabalho...
fonte
git version 2.6.1.windows.1
,git stash -k
funcionou conforme descrito.Git: Stash mudanças não planejadas
Isso irá esconder todas as modificações que você não adicionou com git:
Observe que os arquivos recém-criados (e não adicionados) permanecerão em seu diretório de trabalho, a menos que você também use a
-u
opção.Além disso, seu diretório de trabalho deve estar limpo (ou seja, todas as alterações precisam ser adicionadas) quando você git stash pop mais tarde.
http://makandracards.com/makandra/853-git-stash-unstaged-changes
fonte
git stash --keep-index
. Os arquivos preparados são incluídos no stash.