Receio que a primeira dessas linhas de comando exclua incondicionalmente da cópia de trabalho todos os arquivos que estão na área de preparação do git. O segundo desempenhou todos os arquivos rastreados, mas que foram excluídos. Infelizmente, isso significa que você terá perdido quaisquer modificações não confirmadas nesses arquivos.
Se você deseja obter sua cópia de trabalho e indexar como estavam na última confirmação , você pode (com cuidado ) usar o seguinte comando:
git reset --hard
Digo "com cuidado", pois git reset --hard
eliminará alterações não confirmadas na sua cópia de trabalho e índice. No entanto, nessa situação, parece que você deseja apenas retornar ao estado no seu último commit, e as alterações não confirmadas foram perdidas de qualquer maneira.
Atualização: parece que, pelos seus comentários sobre a resposta de Amber, você ainda não criou nenhum commit (já que HEAD não pode ser resolvido), então isso não vai ajudar, receio.
Quanto à forma como esses canais funcionam: git ls-files -z
e git diff --name-only --diff-filter=D -z
ambos exibem uma lista de nomes de arquivos separados pelo byte 0
. (Isso é útil, pois, diferentemente das novas linhas, 0
é garantido que os bytes não ocorram nos nomes dos arquivos nos sistemas semelhantes ao Unix.) O programa xargs
basicamente constrói linhas de comando a partir de sua entrada padrão, por padrão, obtendo linhas da entrada padrão e adicionando-as ao final da linha de comando. A -0
opção diz esperar que a entrada padrão seja separada por 0
bytes. xargs
pode chamar o comando várias vezes para usar todos os parâmetros da entrada padrão, certificando-se de que a linha de comando nunca fique muito longa.
Como um exemplo simples, se você tiver um arquivo chamado test.txt
, com o seguinte conteúdo:
hello
goodbye
hello again
... então o comando xargs echo whatever < test.txt
chamará o comando:
echo whatever hello goodbye hello again
rm -f
não é um comando git e não tem uma--cached
opção. Seus arquivos locais foram excluídos antes da execução,git rm
portanto, acho que você não pode legitimamente culpargit rm
nada.