não pode git rm um diretório

4

Eu acidentalmente adicionei um diretório à lista de itens que eu deveria confirmar. Agora, quando tento executar um dirname git rm, recebo o erro

rm 'dirname'
fatal: git rm: 'dirname': Is a directory

Eu tentei os seguintes comandos git rm -rf dirname e git rm dirname --force , mas nenhum deles funcionou. Todos eles produziram a mesma mensagem de erro.

Como evito que o dirname seja confirmado?

Estou usando a versão 1.7.0.4 do git

Obrigado

Notas adicionais

Ok, parece que git rm -rf dirname funciona apenas sob algumas condições. Eu fiz alguns testes e normalmente funciona. No entanto, ele falhará se dirname for um repositório git controlado separadamente com um diretório .git. Eu tenho essa configuração porque dirname é uma estrutura controlada por gits compartilhada por muitos dos meus projetos.

    
por John 06.04.2011 / 17:32

2 respostas

6

Bloqueio de quaisquer problemas de permissões ...

git rm --cached -r dirname

Isso deve remover o diretório das confirmações em etapas.

Neste ponto, ele deve ser desmarcado e pode ser uma boa idéia configurá-lo para ser ignorado via gitignore .

    
por 06.04.2011 / 18:37
1

Nunca tive esse problema (por isso, nenhuma promessa de que isso funcionará e / ou não destruirá seus dados - trabalhar em um backup do seu repositório seria melhor!), mas algumas opções:

Opção 1 (se você não tiver se comprometido localmente):

  • git stash de alterações valiosas que você fez.
  • git reset da sua árvore (provavelmente precisa fazer git reset --hard HEAD )
  • git unstash suas alterações ocultas e adicione / confirme com cuidado.

Opção 2 (se você não tiver se comprometido localmente ou se tiver, mas ainda houver um controle remoto ao qual você ainda não tenha enviado):

  • git clone uma versão limpa do repositório
  • Copie cuidadosamente suas alterações para lá
  • adicione / confirme suas alterações com cuidado.

Opção 3 (que faz uma bagunça no seu repo):

  • Confirme seu erro no repositório.
  • Limpar usando git rm -r

(Você não quer fazer isso se o conteúdo desse diretório for enorme, obviamente.)

    
por 06.04.2011 / 18:35

Tags