Eu adicionei mais de 9.000 fotos por acidente à minha pasta de projetos. E os cometeu. Em seguida, excluiu-os do disco. Comprometido.
Agora tento enviar alterações para o servidor git. Mas demora muito e tenta enviar 12 Gb de dados.
Eu verifiquei o tamanho dos arquivos no disco e vi que a .git
pasta realmente ocupa 12 Gb.
Como deletar fotos de lá? Eu tentei git rm
, mas falhei:
❯ git rm public/photos
fatal: pathspec 'public/photos' did not match any files
Porque já os apaguei do disco, mas ainda estão na .git
pasta.
Tentei adicionar public/photos
a .gitignore
:
public/photos/
*.zip
Mas nenhum resultado. É claro que eu poderia hard reset head
quando não tivesse tantas fotos inúteis em meu projeto. Mas desde então eu me comprometi várias vezes e fiz muitas mudanças no código.
fonte
git add .gitignore && commit -m "ignore rule for photos"
sergit add .gitignore && git commit -m "ignore rule for photos"
Uma resposta muito simples é.
Passo 1:
Em primeiro lugar, adicione seus arquivos não rastreados que deseja excluir:
usando
git add .
ougit add <filename>
.Passo 2:
Em seguida, exclua-os facilmente usando o comando
git rm -f <filename>
aqui rm = remove e -f = forcely.fonte
git filter-branch
conforme mencionado em outro lugar.Passo 1
Adicione o (s) nome (s) de
.gitignore
arquivo ao seu arquivo.Passo 2
etapa 3
Um grande obrigado a @mu.
fonte
--ignore-unmatch
usar isso funcionou para mim
fonte
Essas correntes funcionam no meu caso:
git rm -r WebApplication/packages
Houve um git-dialog de confirmação. Você deve escolher a opção "y".
git commit -m "blabla"
git push -f origin <ur_branch>
fonte
fez o trabalho, restaurou os arquivos que eu havia excluído usando em
rm
vez degit rm
.Fiz primeiro uma verificação do último hash, mas não acredito que seja necessário.
fonte
Para remover o arquivo rastreado e antigo confirmado do git, você pode usar o comando abaixo. Aqui, no meu caso, quero desfazer e remover todo o arquivo do
dist
diretório.Em seguida, você precisa adicioná-lo ao seu
.gitignore
para que não seja rastreado posteriormente.fonte
Eu tinha um diretório duplicado (~ web / web) e ele removeu a duplicata aninhada quando executei
rm -rf web
enquanto estava dentro da primeira pasta web.fonte