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



Observe as perguntas relacionadas sugeridas enquanto escreve a sua - a duplicata provavelmente foi uma das duas primeiras.
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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.