Remova o arquivo do repositório, mas mantenha-o localmente

369

Eu tenho uma pasta que gostaria de remover no meu repositório remoto. Gostaria de excluí-lo, mas mantenha a pasta no meu computador

Rodrigo Souza
fonte
Observe as perguntas relacionadas sugeridas enquanto escreve a sua - a duplicata provavelmente foi uma das duas primeiras.
Cascabel
Outra duplicata: stackoverflow.com/questions/1273108/…
Cascabel

Respostas:

637
git rm --cached -r somedir

Preparará a exclusão do diretório, mas não tocará em nada no disco. Isso funciona também para um arquivo, como:

git rm --cached somefile.ext

Depois, você pode adicionar somedir/ou somefile.extao seu .gitignorearquivo para que o git não tente adicioná-lo novamente.

jamessan
fonte
24
E adicione o caminho ao .gitignore para que o git não tente fazer com que você o adicione mais tarde.
grossvogel
3
Isso resultará em (arquivos) o diretório sendo removido quando ele puxar do controle remoto?
precisa saber é o seguinte
Não quando ele puxa; os arquivos serão removidos localmente durante o processo de mesclagem automática do pull. Depois disso, um envio fará com que os arquivos sejam removidos do lado do servidor.
Walter Mundt
7
O que acontece se eu tiver um terceiro controle remoto? Os arquivos correspondentes serão removidos em um pull futuro? Eu pergunto porque acho que esse é um caso de uso bastante comum, ou seja, verifique alguns arquivos no repositório, perceba posteriormente que eles divergem entre os controles remotos, por um bom motivo, e nunca deveriam estar no repositório em primeiro lugar, para resolver isso mantendo todos os checkouts locais exatamente como estão, mas removendo os arquivos do repositório.
Bobby Jack
6
Para arquivos únicos, você pode fazergit rm --cached path/to/file
Travis Reeder
3

Eu apenas:

  • Mova a pasta para fora da sua árvore de trabalho
  • git rm a pasta, confirme a alteração
  • Adicione a .gitignore(ou .git/info/excludes), confirme a alteração
  • Mover a pasta de volta
Jeff
fonte
8
essa não é uma boa solução - e se você tiver um diretório muito grande?
ioleo 8/09/14
provavelmente precisará usargit rm -r
theUtherSide
11
@loostro simplesmente não o mova para outro dispositivo de bloco. Maioria sistemas de arquivos só vai atualizar inode do arquivo, e não literalmente mover o diretório inteiro
648trindade