Qual é a maneira correta de desfazer uma renomeação no git, como:
git mv file1 file2
Qual é a maneira correta de desfazer uma renomeação no git, como:
git mv file1 file2
Respostas:
Resposta não atrevida:
git mv file2 file1
Atualiza o índice para caminhos antigos e novos automaticamente.
Verifique a documentação do git mv
git checkout .
que não funciona, mesmo com a -f
opção?
git checkout -- .
.
fatal: source directory is empty,
apenas git reset --hard
funcionou.
Se você não fez outras alterações (que deseja manter) desde a última confirmação, poderá fazer
git reset --hard
git reset --hard
. Apenas movê-lo para trás parece uma opção mais segura para mim.
git reset HEAD file2
fez o truque para mim
No meu caso, movi uma pasta inteira e percebi que não deveria.
Gostei muito da resposta de @Dave Konopka, mas não tive muito sucesso com essa abordagem (talvez minha versão do GIT (1.8.4)?) Meus arquivos ainda foram exibidos como excluídos. Houve outras alterações na pilha que não queria perder (infelizmente).
Eu tive sucesso fazendo isso:
git reset moved_folder
git checkout original_folder
Depende do que você deseja realizar. Se você deseja que ele apareça como se o arquivo nunca tivesse sido movido, é possível redefinir (ou refazer a recuperação) antes da mudança. Se você não se importa com a história, basta recuar.
Se você tiver renomeado acidentalmente um grande número de arquivos e quer voltar para onde você começou, apagar todos os arquivos renomeados que aparecem como adds
sob umagit status
chamada.
Depois de excluir todos os arquivos alterados, você pode executar git checkout -- *
para recuperar os nomes dos arquivos originais localmente.
git reset HEAD file2
git checkout -- file1
rm file2
O primeiro comando desestaca file2, mas deixa uma cópia dele por aí. O segundo comando restaura o arquivo original e o terceiro exclui o novo arquivo.
O truque que usei foi fazer um git stash para desfazer todas as minhas alterações (o que inclui restaurar os arquivos mv'd) e, em seguida, excluí-lo com o git stash drop.
git mv file2 file1