Excluindo arquivos usando Git / GitHub

115

Em primeiro lugar, sou novo no Git.

Excluí vários arquivos localmente no meu Mac usando o Finder. Quero que os arquivos que excluí não apareçam mais no branch atual, mas aparecem.

Algum usuário do Git conhece um comando para atualizar o índice?

Zack
fonte
Consulte também stackoverflow.com/questions/492558/…
Petr Gladkikh

Respostas:

226

Acho que essa seria uma maneira mais simples de fazer o que você quer:

git add . -A 

Então você apenas faria:

git commit -m "removed some files"

Como observado acima.

Samuel Mikel Bowles
fonte
Obrigado. E eu tinha acabado de escrever um alias bashpara fazer o acima. Surpreendente.
Zack de
12
O que o sinalizador -A faz?
Kim Prince de
1
@KimPrince - De acordo com kernel.org , "-A --todos como -u, mas compara <filepattern> com arquivos na árvore de trabalho, além do índice. Isso significa que encontrará novos arquivos, bem como conteúdo modificado de teste e remover arquivos que não estão mais na árvore de trabalho. "
j08691
3
@KimPrince git help addlhe dirá o que -Asignifica e lista todas as outras opções também.
Marcin Orlowski
1
Isso faz muito mais do que apenas remover arquivos excluídos. Ele adiciona todos os arquivos que foram alterados no diretório, portanto, essa não é uma resposta realmente satisfatória.
Alex
19

Você pode ver os arquivos excluídos, que ainda são 'rastreados' com:

git ls-files --deleted

Para excluir arquivos de um branch, você pode fazer algo assim:

git ls-files --deleted -z | xargs -0 git rm

De man git-rm:

Remova os arquivos do índice ou da árvore de trabalho e do índice. git-rm não removerá um arquivo apenas do seu diretório de trabalho. (Não há opção para remover um arquivo 13 apenas da árvore de trabalho e ainda mantê-lo no índice; use / bin / rm se quiser fazer isso.)

Finalmente, para confirmar a "remoção", faça algo como:

git commit -m "removed some files"
Miku
fonte
Então você precisa confirmar a mudança -git commit -m "removed some files"
James Polley
17

Não sei se isso foi adicionado ao git desde as respostas anteriores, mas acabei de usar

git add -u
git commit -m "Removed some files"

para conseguir a mesma coisa.

Gareth
fonte
Isso funciona para o caso de uso listado, mas não apenas adiciona a exclusão dos arquivos. Ele adiciona todos os arquivos que foram alterados de alguma forma, portanto, geralmente não é uma boa maneira de remover todos os arquivos excluídos, a menos que essas sejam as únicas alterações feitas.
Alex
2
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all
git commit -m "Removed deletefile.name"
git push origin master --force

Substitua deletefile.name pelo arquivo a ser removido. Para obter uma explicação detalhada e aprofundada, leia o bom artigo https://help.github.com/articles/remove-sensitive-data

Chawathe Vipul S
fonte