Como remover um arquivo do índice (= área de armazenamento temporário = cache) sem removê-lo do sistema de arquivos?
Como remover um arquivo do índice (= área de armazenamento temporário = cache) sem removê-lo do sistema de arquivos?
Respostas:
Você quer:
git rm --cached [file]
Se você omitir a --cachedopção, ela também será excluída da árvore de trabalho. git rmé um pouco mais seguro que git reset, porque você será avisado se o conteúdo preparado não corresponder à ponta da ramificação ou ao arquivo no disco. (Caso contrário, você deve adicionar --force.)
git rm --cachedpara removê-los do repositório, adicione os arquivos ou diretórios relevantes ao .gitignore, prepare e confirme normalmente. Eles serão retirados do repositório, mas permanecerão intocados na árvore local e você não fará o check-in acidentalmente novamente.
Isso deve desestabilizar um <arquivo> para você (sem remover ou modificar o arquivo):
git reset <file>
HEAD.
HEAD!
git reset HEAD <file>
para remover um arquivo específico do índice.
e
git reset HEAD
para remover todos os arquivos indexados.
Dependendo do seu fluxo de trabalho, este pode ser o tipo de coisa que você raramente precisa, de modo que não há muito sentido em tentar descobrir uma solução de linha de comando (a menos que você esteja trabalhando sem uma interface gráfica por algum motivo).
Basta usar uma das ferramentas baseadas em GUI que oferecem suporte ao gerenciamento de índice, por exemplo:
git gui <- usa a estrutura de janelas Tk - estilo semelhante ao gitkgit cola <- uma interface GUI de estilo mais modernoIsso permite que você mova os arquivos para dentro e para fora do índice ao apontar e clicar. Eles ainda têm suporte para selecionar e mover partes de um arquivo (alterações individuais) para e do índice.
Que tal uma perspectiva diferente: se você errar ao usar um dos comandos sugeridos, um tanto enigmáticos:
git rm --cached [file]git reset HEAD <file>... você tem uma chance real de perder dados - ou pelo menos dificultar a localização. A menos que você realmente precise fazer isso com uma frequência muito alta, é provável que o uso de uma ferramenta GUI seja mais seguro .
Com base nos comentários e votos, percebi que muitas pessoas usam o índice o tempo todo. Eu não. Aqui está como:
git commit -agit commit (list of files)git commit -aem seguida, alterar viagit guigit difftool --dir-diff --tool=meldgit commit -a. Quando eu estava respondendo a essa pergunta, foi porque havia feito (uma exótica) " escolha inversa da cereja " que coloca os arquivos no índice para você, mas eu queria editar um arquivo antes de confirmar. Tirei o arquivo do índice enquanto o editava para que as diferenças funcionassem da maneira que estou acostumado.
rmimediatamente, mas primeiro pensei que alternar ramos não mataria a pasta ignorada . mas ... Eu uso a ferramenta "baseada em gui" do github, que é boa o suficiente para mim e suporta algum gerenciamento de índice, exceto que não suporta isso. Então, o que devo usar 2 GUIs para uso restrito? ainda não posso concordar com a resposta.