Preciso excluir uma pasta (uploads de nomes) do rastreamento. Eu tentei correr
git rm -r --cached wordpress/wp-content/uploads
e depois adicionei o caminho para .gitignore
/wordpress/wp-content/uploads
mas quando corri, git status
eles aparecem como excluídos. Se eu tentar confirmar as alterações, os arquivos serão excluídos, não apenas removidos do rastreamento.
O que estou fazendo errado?
Eu também tentei
git update-index --assume-unchanged <file>
mas isso parece rastrear apenas arquivos. Mas preciso remover uma pasta inteira (incluindo subpastas) do rastreamento.
reset --hard
, ele usará.pull
confirmar em outro lugar, esses arquivos serão excluídos do novo sistema.Respostas:
Me deparei com essa pergunta enquanto pesquisava no Google por "git remove folder from tracking". A pergunta do OP me levou à resposta. Estou resumindo aqui para as gerações futuras.
Questão
Como removo uma pasta do meu repositório git sem excluí-la da minha máquina local (por exemplo, ambiente de desenvolvimento)?
Responda
Etapa 1. Adicione o caminho da pasta ao
.gitignore
arquivo raiz do seu repositório .Etapa 2. Remova a pasta do seu rastreamento git local, mas mantenha-a em seu disco.
Etapa 3. Envie suas alterações ao seu repositório git.
A pasta será considerada "excluída" do ponto de vista do Git (ou seja, eles estão no histórico anterior, mas não no último commit, e as pessoas que fazem parte deste repositório obtêm os arquivos removidos de suas árvores), mas permanecem no diretório de trabalho porque você já usou
--cached
.fonte
Isso funciona para mim:
--ignore-unmatch
é importante aqui, sem essa opção, o git sairá com erro no primeiro arquivo que não está no índice.fonte
unknown option 'ignore unmatched'
git rm -r --cached --ignore-unmatch .idea/*.xml
Para esquecer o diretório, adicione recursivamente
/*/*
ao caminho:Usar
git rm --cached
não é bom para colaboração. Mais detalhes aqui: como parar o rastreamento e ignorar as alterações em um arquivo no Git?fonte
Eu sei que esse é um tópico antigo, mas eu só queria adicionar um pouco, pois a solução marcada não resolveu o problema para mim (embora eu tenha tentado várias vezes).
A única maneira de eu realmente parar o git form tracking da pasta era fazer o seguinte:
git rm -r --cached your_folder/
your_folder/
a .gitignoreAgora você deve ver que a pasta não é mais rastreada.
Não me pergunte por que apenas limpar o cache não funcionou para mim, não sou um super assistente do Git, mas foi assim que resolvi o problema.
fonte
Na documentação do git:
Outra coisa útil que você pode querer fazer é manter o arquivo na sua árvore de trabalho, mas removê-lo da sua área de preparação. Em outras palavras, convém manter o arquivo no disco rígido, mas o Git não o acompanha mais. Isso é particularmente útil se você esqueceu de adicionar algo ao seu arquivo .gitignore e o organizou acidentalmente, como um arquivo de log grande ou um monte de arquivos .a compilados. Para fazer isso, use a opção --cached:
Então, talvez não inclua o "-r"?
fonte
--cached
. A-r
opção é para "recursiva", que deve ser incluída nesta instância.