É possível desestabilizar a última mudança faseada (não confirmada) no git ? Suponha que existam muitos arquivos no ramo atual, alguns preparados, outros não. Em algum momento, algum programador tolo acidentalmente executou:
git add -- .
...ao invés de:
git checkout -- .
Agora esse programador pode desestabilizar suas últimas alterações com algum comando mágico do git ? Ou ele deveria ter cometido antes de experimentar em primeiro lugar?
git add
comando, especialmente para os arquivos que já tinham etapas testadas e que tinham algumas alterações que deveriam ser desfeitas, não encenadas. Não posso dizer que a outra pergunta não está relacionada.Respostas:
Você pode usar
git reset
. Isso desestabilizará todos os arquivos que você adicionou após seu último commit.Se você deseja desfazer apenas alguns arquivos, use
git reset -- <file 1> <file 2> <file n>
.Também é possível desestabilizar algumas das alterações nos arquivos usando
git reset -p
.fonte
-p
opção. Obrigado! :)Você não pode desfazer a última adição do git, mas pode desfazer todos os
add
s desde o último commit.git reset
sem um argumento de confirmação redefine o índice (desestágena as mudanças faseadas):fonte
reset
único arquivo oureset -p
desestabilizar um pedaço específico.Então, a verdadeira resposta para
é realmente: Não, você não pode desfilar apenas o último
git add
.Ou seja, se interpretarmos a pergunta como na seguinte situação:
Arquivo inicial:
Primeira alteração seguida por
git add
:Segunda alteração seguida por
git add
:Nesse caso,
git reset -p
não ajudará, pois sua menor granularidade são linhas.git
não sabe disso sobre o estado intermediário de:não mais.
fonte
Você pode usar
git reset
(consulte a documentação )fonte
Na data, o git solicita:
use "git rm --cached <file>..." to unstage
se os arquivos não estavam no repositório. Desinstala os arquivos mantendo-os lá.use "git reset HEAD <file>..." to unstage
se os arquivos estavam no repositório e você os está adicionando como modificados. Ele mantém os arquivos como estão e os desestabiliza.Pelo que sei, você não pode desfazer a
git add --
ação, mas pode desestabilizar uma lista de arquivos conforme mencionado acima.fonte
Remova o arquivo do índice, mas mantenha-o com versão e com alterações não confirmadas na cópia de trabalho:
Redefina o arquivo para o último estado do HEAD, desfazendo as alterações e removendo-as do índice:
Isso é necessário, pois
git reset --hard HEAD
não funcionará com arquivos únicos.Remova
<file>
do índice e versão, mantendo o arquivo sem versão com alterações na cópia de trabalho:Remova
<file>
completamente a cópia de trabalho e o controle de versão:fonte
Se você deseja remover todos os arquivos adicionados do git para commit
Se você deseja remover um arquivo individual
fonte
Você pode usar
para desfazer os arquivos locais adicionados recentemente
desfazer as alterações para um arquivo específico
fonte
Dependendo do tamanho e escala da dificuldade, você pode criar uma ramificação temporária (temporária) e confirmar o trabalho atual lá.
Em seguida, mude para e faça o checkout de sua ramificação original e escolha os arquivos apropriados na confirmação inicial.
Pelo menos você teria um registro permanente dos estados atual e anterior para trabalhar (até excluir esse ramo temporário).
fonte