Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.34.1 no changes
- 2.34.0 11/15/21
- 2.33.0 → 2.33.1 no changes
- 2.32.0 06/06/21
- 2.26.1 → 2.31.1 no changes
- 2.26.0 03/22/20
- 2.16.6 → 2.25.5 no changes
- 2.15.4 12/06/19
- 2.14.6 12/06/19
- 2.13.7 05/22/18
RESUMO
git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--pathspec-from-file=<arquivo> [--pathspec-file-nul]] [--] [<pathspec>…]
DESCRIÇÃO
Remove os arquivos correspondentes ao pathspec
do índice, ou da árvore de
trabalho e do índice. O comando git rm
não removerá um arquivo apenas do
seu diretório de trabalho. (Não há opção para remover um arquivo apenas da
árvore de trabalho e ainda mantê-lo no índice; utilize /bin/rm
caso queira
fazer isso.) Os arquivos que estão sendo removidos devem ser idênticos ao
cume do ramo e nenhuma atualização do seu conteúdo pode ser preparada no
índice, embora este comportamento predefinido possa ser substituído pela
opção -f `. Quando `--cached
é utilizado, o conteúdo escalonado deve
corresponder ao cume do ramo ou ao arquivo no disco, permitindo que o
arquivo seja removido no índice apenas.
OPÇÕES
- <pathspec>…
-
Arquivos para serem removidos. Um nome do diretório principal (por exemplo,
dir
para removerdir/arquivo1
edir/arquivo2
) pode ser utilizadopara remover todos os arquivos do diretório e recursivamente de todos os subdiretórios, porém isso requer o uso da opção-r
de forma explicita.O comando remove apenas os caminhos que sejam informados pelo Git.
As coincidência do mascaramento do nome do arquivo através dos limites do diretório. Assim, os dados dos dois diretórios
d
ed2
, existe uma diferença entre o uso do comandogit rm 'd*'
egit rm 'd/*'
, pois o primeiro também removerá todo o diretóriod2
.Para mais detalhes sobre a sintaxe <pathspec>, veja a entrada pathspec em gitglossary[7].
- -f
- --force
-
Substitua a verificação atualizada.
- -n
- --dry-run
-
Na verdade, não remova nenhum arquivo. Em vez disso, exiba apenas se eles existem no índice e caso contrário, seriam removidos pelo comando.
- -r
-
Permita a remoção recursiva quando um nome do diretório principal for informado.
- --
-
Esta opção pode ser utilizada para separar as opções da linha de comandos da lista dos arquivos (útil quando os nomes do arquivo puderem ser confundidos com as opções da linha de comando).
- --cached
-
Utilize esta opção para desestabilizar e remover os caminhos do índice apenas. Os arquivos da árvore de trabalho, modificados ou não, serão deixados em paz.
- --ignore-unmatch
-
Encerre com uma condição zero, ainda que não haja a coincidência com nenhum arquivo.
- -q
- --quiet
-
O comando
git rm
normalmente gera uma linha (na forma de um comandorm
) para cada arquivo removido. Esta opção suprime essa saída. - --pathspec-from-file=<arquivo>
-
O "pathspec" é passado com
<arquivo>
em vez dos argumentos da linha de comando. Caso o<arquivo>
seja exatamente-
, a entrada padrão será utilizada. Os elementos do "pathspec" são separados por caracteres de término de linhaLF
ouCR/LF
. Os elementos do "pathspec" podem ser citados conforme explicado na variável de configuraçãocore.quotePath
(consulte git-config[1]). Consulte também opção--pathspec-file-nul
e o global--literal-pathspecs
. - --pathspec-file-nul
-
Só faz algum sentido caso seja utilizado junto com a opção
--pathspec-from-file
. Os elementos "pathspec" são separados com caracteresNUL
e todos os outros caracteres são considerados de forma literal (incluindo as novas linhas e as citações).
REMOVENDO OS ARQUIVOS QUE DESAPARECERAM DO SISTEMA DE ARQUIVOS
Não há uma opção para o comando git rm
para remover do índice apenas os
caminhos que desapareceram do sistema de arquivos. No entanto, dependendo do
caso, há várias maneiras de se fazer isso.
Utilizando o git commit -a
Caso tenha pretensão de que o seu próximo commit registre todas as
modificações dos arquivos rastreados na árvore de trabalho e registre todas
as remoções dos arquivos que foram removidos da árvore de trabalho com rm
(ao contrário de git rm
), utilize git commit -a
, pois alertará e
registrará automaticamente todas as remoções. É possível ter também um
efeito semelhante sem fazer um commit utilizando o comando git add -u
.
Utilizando git add -A
Ao aceitar um novo código para o fornecedor de um ramo, você provavelmente deseja registrar a remoção dos caminhos e as adições dos novos caminhos, bem como as modificações dos caminhos já existentes.
Normalmente, você primeiro remove todos os arquivos rastreados da árvore de trabalho utilizando este comando:
git ls-files -z | xargs -0 rm -f
e descompacte o novo código na árvore de trabalho. Como alternativa, você pode usar o comando rsync nas alterações na árvore de trabalho.
Depois disso, a maneira mais fácil de registrar todas as remoções, adições e modificações na árvore de trabalho é:
git add -A
Consulte git-add[1].
Outras maneiras
Se tudo o que você realmente deseja é remover do índice os arquivos que não
estão mais presentes na árvore de trabalho (talvez porque a sua árvore de
trabalho esteja suja e você não possa usar o comando git commit -a
),
utilize o seguinte comando:
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached
SUBMÓDULOS
Somente os submódulos que usam um arquivo git (o que significa que foram
clonados com uma versão 1.7.8 ou mais recente do Git) serão removidos da
árvore de trabalho, pois seu repositório vive dentro do diretório .git do
superproject
. Caso um submódulo (ou um dos aninhados dentro dele) ainda
utilize um diretório .git, git rm
moverá o diretório dos submódulos git
para o diretório superprojects
git para proteger o histórico do
submódulo. Caso exista a seção submodule.<nome> no arquivo
gitmodules[5] também será removido e esse arquivo será preparado (a
menos que --cached
ou -n
sejam utilizados).
Um submódulo é considerado atualizado quando HEAD
for o mesmo que o
registrado no índice, nenhum arquivo rastreado é modificado e nenhum arquivo
que não for rastreado não é ignorado, está presente na árvore de trabalho do
submódulo. Os arquivos ignorados são considerados dispensáveis e não
impedem que a árvore de trabalho de um submódulo seja removida.
Caso queira remover apenas a averiguação local de um submódulo vindo da sua
árvore de trabalho sem fazer o commit de remoção, em vez disso utilize o
git-submodule[1] deinit
. Para obter mais detalhes sobre a remoção
do submódulo, veja também gitsubmodules[7].
EXEMPLOS
-
git rm Documentation/\*.txt
-
Remove todos os arquivos
* .txt
do índice que estão no diretórioDocumentation
e em qualquer um dos seus subdiretórios.Note que o asterisco
*
é citado no shell neste exemplo; isso permite que o Git e não o shell, expanda os nomes dos caminhos dos arquivos e subdiretórios no diretórioDocumentation/
. -
git rm -f git-*.sh
-
Como este exemplo permite que o shell expanda o asterisco (ou seja, você está listando os arquivos explicitamente), ele não considera o
subdir/git-foo.sh
.
BUGS
Sempre que uma atualização do superproject
remove um submódulo preenchido
(por exemplo, ao alternar entre commits antes e após a remoção), um checkout
obsoleto do submódulo permanece no local antigo. A remoção do diretório
antigo só é segura quando ele usa um gitfile
; caso contrário, o histórico
do submódulo também será excluído. Esta etapa será obsoleta quando a
atualização recursiva do submódulo for implementada.
GIT
Parte do conjunto git[1]