Estou trabalhando em um branch, digamos branch "experimental", que eu ramifico de meu branch master. Então, eu gerei um modelo de usuário no branch experimental, mas não os adiciono ao índice ainda.
O que devo fazer se quiser descartar todas as alterações dos arquivos recentemente adicionados em meu branch experimental? Os arquivos não rastreados estão listados abaixo:
$ git status
On branch new_chick
Untracked files:
(use "git add <file>..." to include in what will be committed)
.project
app/models/user.rb
db/migrate/
test/fixtures/users.yml
test/unit/user_test.rb
Tentei executar "git reset --hard" na esperança de desfazer todas essas alterações, mas todos os arquivos acima ainda aparecem.
Alguém, por favor, me ilumine?
Respostas:
Para remover arquivos / diretórios não rastreados, faça:
-f - força
-d - diretórios também
-x - remove arquivos ignorados também (não use isto se você não quiser remover arquivos ignorados)
Use com cuidado!
Esses comandos podem excluir arquivos arbitrários permanentemente, nos quais você não pensou a princípio. Por favor, verifique e leia todos os comentários abaixo desta resposta e da seção --help, etc., para saber todos os detalhes para ajustar seus comandos e certamente obter o resultado esperado.
fonte
-x
COM CUIDADO, pois isso excluirá arquivos permanentemente. Ou use com-n
conforme mencionado por @Druska-x
Ainda não usei o .projeto e outros arquivos de configuração foram excluídos. Tive que puxar o repo novamente do último commit para um novo diretório.Abordagem interativa do usuário:
-i para interativo
-f para force
-d para o diretório
-x para arquivos ignorados (adicione se necessário)
Nota: Adicione -n ou --dry-run apenas para verificar o que ele fará.
fonte
Esses são arquivos não rastreados. Isso significa que o git não está rastreando eles. Ele só os lista porque não estão no arquivo git ignore. Já que eles não estão sendo rastreados pelo git,
git reset
não toque neles.Se você quiser eliminar todos os arquivos não rastreados, a maneira mais simples é
git clean -f
(usegit clean -n
se quiser ver o que seria destruído sem realmente excluir nada). Caso contrário, você pode simplesmente excluir os arquivos que não deseja manualmente.fonte
Para excluir arquivos não rastreados:
git clean -f
Para excluir diretórios não rastreados também, use:
git clean -f -d
Para prevenir qualquer parada cardíaca, use
git clean -n -f -d
fonte
Você também pode retornar ao estado anterior do repo local de outra maneira:
git add
.git reset --hard
.fonte
O comando para o seu resgate é
git clean
.fonte
Bem, eu tive um problema semelhante. Eu tinha pegado o mais recente, mas houve algumas mudanças no local devido às quais a mesclagem não estava acontecendo em um arquivo específico. O arquivo não foi rastreado e eu não os queria, então o que fiz foi -
$ git checkout filepath / filename
filepath - O local de onde fiz o git bash. então, quando peguei o mais recente, as alterações estavam disponíveis
fonte
Enquanto
git clean
funcione bem, ainda acho útil usar meu próprio script para limpar o repositório git, ele tem algumas vantagens.Isso mostra uma lista de arquivos a serem limpos e, em seguida, solicita interativamente para limpar ou não. Quase sempre isso é o que eu quero, já que solicitar interativamente por arquivo se torna tedioso.
Também permite a filtragem manual da lista, o que é útil quando há tipos de arquivo que você não deseja limpar (e tem motivos para não enviar).
git_clean.sh
fonte