Excluí alguns arquivos e o status do git é mostrado abaixo.
Eu cometi e empurrei.
O GitHub ainda mostra os arquivos excluídos no repositório. Como posso excluir arquivos no repositório do GitHub?
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: modules/welcome/language/english/kaimonokago_lang.php
# deleted: modules/welcome/language/french/kaimonokago_lang.php
# deleted: modules/welcome/language/german/kaimonokago_lang.php
# deleted: modules/welcome/language/norwegian/kaimonokago_lang.php
Se eu usar git rm
, ele fornece o seguinte.
usage: git rm [options] [--] <file>...
-n, --dry-run dry run
-q, --quiet do not list removed files
--cached only remove from the index
-f, --force override the up-to-date check
-r allow recursive removal
--ignore-unmatch exit with a zero status even if nothing matched
Respostas:
atualiza todas as suas alterações
fonte
Seja muito cauteloso
git rm .
; pode remover mais do que você deseja. Obviamente, você pode se recuperar, mas é mais simples não precisar fazê-lo.O mais simples seria:
Você não pode usar curingas do shell porque os arquivos não existem, mas você pode usar (no Bash pelo menos):
Ou considere:
Isso pega a saída de
git status
, não imprime nada por padrão (sed -n
), mas nas linhas iniciadas# deleted:
, ele se livra do#
e dodeleted:
e imprime o que resta;xargs
reúne os argumentos e os fornece a umgit rm
comando. Isso funciona para qualquer número de arquivos, independentemente da semelhança (ou diferença) nos nomes.fonte
git diff --diff-filter=D --name-only -z | xargs -0 git rm
é uma abordagem mais confiável do que tentar analisar,git status
orientado ao usuário e sem garantia de estabilidade em versões futuras.git diff
(as quais eu não tinha, por não ter tido a necessidade antes). Obrigado!git ls-files --deleted | xargs git rm
fez o truque para mim.Outra versão da resposta ByScripts é
Isso APENAS removerá os arquivos excluídos do git.
Também pode ser usado para adicionar APENAS arquivos modificados.
Esses comandos também funcionam no gitbash para Windows.
fonte
git ls-files
status excluído ou modificado é muito útil.'git add --update (or -u)'
argumento sem caminho de um subdiretório da árvore será alterado no Git 2.0 e não deverá mais ser usado. Para adicionar conteúdo para a árvore inteira, execute:git add --update :/
(ou git add -u: /) Para restringir o comando ao diretório atual, execute:git add --update .
(ou git add -u.) Com a versão atual do Git, o comando é restrito ao diretório atualsrc/my spaced directory/myfile
. Isso pode ser tratado individualmente, mas como pode ser tratado usando os comandos nesta resposta?Atualize todas as alterações feitas:
Os arquivos excluídos devem mudar de não estágios (geralmente vermelho) para estágios (verde). Em seguida, comprometa-se a remover os arquivos excluídos:
fonte
A melhor solução se você não se importa com o armazenamento temporário de arquivos modificados é usar o
git add -u
que foi dito por mshameers e / ou pb2q .Se você deseja apenas remover arquivos excluídos, mas não colocar nenhum arquivo modificado, acho que você deve usar o
ls-files
argumento com a--deleted
opção (não há necessidade de usar regex ou outros argumentos / opções complexos):fonte
git add -A
resolve esse problema ... caso alguém queira saber no futuro. verifique a resposta abaixo #Sim,
git rm <filename>
encenará o estado excluído de um arquivo, onde<filename>
pode haver um padrão global:Então, você pode confirmar.
git commit -a
fará isso de uma só vez, se você quiser.Você também pode usar
git add -u
para preparar todas as alterações, incluindo todos os arquivos excluídos, e confirmar.fonte
git add -u
é exatamente o que estamos procurando - se você fizer muitas exclusões, em seguida, deseja confirmar todas as exclusões, que parece ser a maneira mais fácil e mais 'padrão' (ou seja, sem globs específicos de caso ou shell complexo analisando xargs). Existe uma razão para não querermos usar isso, além do fato de adicionar todas as alterações de uma só vez?Quando tenho muitos arquivos excluídos que não estão em estágio de confirmação, você pode
git rm
todos eles em um programa com:Como o respondente da pergunta mencionado, tenha cuidado com
git rm
.fonte
Tente o seguinte:
fonte
Você pode usar
Depois de excluir os arquivos manualmente.
fonte
Você pode criar um script de shell que removerá todos os seus arquivos quando executar:
O script criado é
remove.sh
e contém a lista completa degit rm
comandos.fonte
fonte
fonte
Se você deseja excluir todos eles usando "git rm". Isto é o que eu faço:
Esta consulta lista todos os arquivos que foram removidos e os exclui do seu repositório git. Espero que ajude.
fonte
A função de limpeza integrada também pode ser útil ...
fonte
Eu tive esse problema de arquivos fantasmas aparecendo no meu repositório depois que os apaguei e me deparei com esse comando puro!
git add -A
É essencialmente o mesmo
git add -a
egit add -u
combinado, mas diferencia maiúsculas de minúsculas. Comprei-o neste link incrível (este link aponta para a versão em archive.org agora, porque o original foi convertido em uma página de spam / phishing em junho de 2016)fonte
Aqui está como detectar arquivos excluídos e organizar sua exclusão como parte do próximo commit. Todas as soluções neste segmento têm méritos diferentes. Esta solução abaixo lida especificamente com o problema de nomes de arquivos com espaços neles.
certifique-se de testar isso com a opção --dry-run do git antes de executá-lo com o seguinte:
explicação:
Isso imprime algo como D "/ caminho para uma pasta / caminho para um arquivo", que ocorre apenas quando há espaços nos nomes dos caminhos.
corresponde apenas às linhas que começam com "D"
remova "D" da frente de cada corda
remova aspas, se houver
defina variáveis de nome de arquivo como {} execute o nome do arquivo em git rm entre aspas simples para garantir que ele suporte nomes de arquivos com espaços.
fonte