Existe um comando git para reverter todas as alterações não confirmadas em uma árvore e índice de trabalho e também remover arquivos e pastas recém-criados?
Existe um comando git para reverter todas as alterações não confirmadas em uma árvore e índice de trabalho e também remover arquivos e pastas recém-criados?
Respostas:
Você pode executar estes dois comandos:
# Revert changes to modified files.
git reset --hard
# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd
git clean -i
para um modo interativo.
git merge --abort
.
Se você deseja reverter as alterações apenas no diretório de trabalho atual, use
git checkout -- .
E antes disso, você pode listar os arquivos que serão revertidos sem realmente executar nenhuma ação, apenas para verificar o que acontecerá, com:
git checkout --
git reset --hard
?
Use "git checkout - ..." para descartar as alterações no diretório de trabalho
git checkout -- app/views/posts/index.html.erb
ou
git checkout -- *
remove todas as alterações feitas em arquivos não estágios no status git, por exemplo
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
git checkout -- *
não funciona para mim, a menos que eu esteja no diretório em que os arquivos alterados estão localizados. Para a verificação de todos os arquivos em toda a todo o repositório, você deve fazergit checkout -- :/
git checkout -- *
, a estrela é substituída pelo Shell, com todos os arquivos e diretórios no diretório atual. Portanto, deve ir em subdiretórios. Funciona para mim. Mas, graças a destacar a sintaxe ": /" que parece mais limpa na minha opinião.
Uma maneira não trivial é executar estes dois comandos:
git stash
Isso moverá suas alterações para o stash, levando você de volta ao estado de HEADgit stash drop
Isso excluirá o último stash criado no último comando.fatal: git-write-tree: error building trees Cannot save the current index state
git clean -fd
não ajudou, novos arquivos permaneceram. O que eu fiz foi excluir totalmente toda a árvore de trabalho e depois
git reset --hard
Consulte " Como limpo meu diretório de trabalho local no git? " Para obter conselhos para adicionar a -x
opção de limpeza:
git clean -fdx
O -x
sinalizador de nota removerá todos os arquivos ignorados pelo Git, portanto, tenha cuidado (consulte a discussão na resposta à qual me refiro).
Eu acho que você pode usar o seguinte comando: git reset --hard
Observe que ainda pode haver arquivos que parecem não desaparecer - eles podem não ter sido editados, mas o git pode tê-los marcado como editados devido a alterações no CRLF / LF. Veja se você fez algumas alterações .gitattributes
recentemente.
No meu caso, adicionei configurações de CRLF ao .gitattributes
arquivo e todos os arquivos permaneceram na lista "arquivos modificados" por causa disso. Alterar as configurações de .gitattributes os fez desaparecer.
Se você tiver uma alteração não confirmada (apenas na sua cópia de trabalho) que deseja reverter para a cópia em sua confirmação mais recente, faça o seguinte:
git checkout filename
git rm filename
, e não está funcionando. error: pathspec 'filename' did not match any file(s) known to git.
git rm
égit checkout master -- filename
O Git 2.23 introduziu o git restore
comando para restaurar os arquivos da árvore de trabalho.
https://git-scm.com/docs/git-restore
Para restaurar todos os arquivos no diretório atual
restauração git.
Se você deseja restaurar todos os arquivos de origem C para corresponder à versão no índice, é possível fazer
git restore '* .c'
Você pode apenas usar o seguinte comando git, que pode reverter todas as alterações não confirmadas feitas no seu repositório:
git checkout .
Exemplo:
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: application/controllers/Drivers.php
modified: application/views/drivers/add.php
modified: application/views/drivers/load_driver_info.php
modified: uploads/drivers/drivers.xlsx
no changes added to commit (use "git add" and/or "git commit -a")
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
Um caminho seguro e longo:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete