@ Iarsmans: Sim 6 arquivos. Ambos os diretórios são idênticos, exceto um em maiúsculas e outro em minúsculas.
Sahat Yalkabov
Respostas:
2326
Remova o diretório do git e local
Você pode fazer o checkout 'master' com os dois diretórios;
git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
Remova o diretório do git, mas NÃO local
Conforme mencionado nos comentários, o que você normalmente quer fazer é remover este diretório do git, mas não excluí-lo totalmente do sistema de arquivos (local)
Eu tive a mesma situação exata. Quando eu tentei git rm -r myFolder, funcionou, mas também excluiu tudo do diretório "MyFolder". Teve que reverter tudo no diretório "MyFolder" e depois confirmar.
25412 Justin
240
@Justin Para remover somente a partir de git e filesystem licença como está, usogit rm -r --cached myFolder
karmakaze
32
A mensagem de erro que recebo é: fatal: pathspec 'directory' não encontrou nenhum arquivo.
user2441441
3
@ user2441441 Eu tive esse erro poping quando eu estava tentando remover uma pasta / arquivo que não foi adicionado ao repositório em todos
lukeatdesignworks
3
git rm -r --cached directory/remove apenas do git tracked, mas a estrutura do repositório permanece.
Néstor
287
Para remover a pasta / diretório apenas do repositório git e não do local, tente 3 comandos simples.
Etapas para ignorar essa pasta nas próximas confirmações
Para ignorar essa pasta das próximas confirmações, crie um arquivo na raiz chamado .gitignore
e coloque o nome dessa pasta nela. Você pode colocar quantas quiser
Você também precisará executar o git rm -r --cached FolderName git commit -m "Pasta removida do repositório" em seu outro computador e, em seguida, faça um puxão para mantê-lo sincronizado.
6165 Simon
1
Isso excluirá o diretório do ponto em que foi adicionado ao repositório até agora? Ou é apenas para remover o diretório e reenviá-lo para o repositório .git?
alpha_989
1
Ótimo! Trabalhando!
codificadores
2
Bem explicado, boa resposta
Rakshit Shah 25/11/19
1
bem feito. Na minha máquina, o terceiro passo não funciona. Mas funciona se for alterado para $ git push #
211
82
Se, por alguma razão, o que o karmakaze disse não funcionar, você pode tentar excluir o diretório que deseja usar ou com o navegador do sistema de arquivos (por exemplo, no Windows File Explorer). Após excluir o diretório, emitindo o comando: git add -A
e depois git commit -m 'deleting directory'
e depois git push origin master.
Se você remover os arquivos no diretório (com git rmas outras respostas explicadas), o diretório não existirá mais no que diz respeito ao git. Você não pode confirmar um diretório vazio nem remover um.
Isso é diferente da subversão em que você precisa explicitamente svn rm emptyfolder/, e é por isso que a manpágina do git se descreve como "o estúpido rastreador de conteúdo"
Atualmente, o design do índice git (área de preparação) permite apenas a listagem de arquivos, e ninguém competente o suficiente para fazer a alteração para permitir diretórios vazios se preocupou o suficiente com essa situação para remediá-la.
Os diretórios são adicionados automaticamente ao adicionar arquivos dentro deles. Ou seja, os diretórios nunca precisam ser adicionados ao repositório e não são rastreados por si mesmos.
Você pode dizer " git add <dir>" e ele adicionará arquivos lá.
Se você realmente precisa que um diretório exista nos caixas, deve criar um arquivo nele. .gitignore funciona bem para esse fim; você pode deixá-lo vazio ou preencher os nomes dos arquivos que você espera que apareçam no diretório
Eu queria excluir um diretório vazio (pasta) que criei, o git não pode excluí-lo, depois de algumas pesquisas, aprendi que o Git não controla diretórios vazios. Se você tem um diretório vazio em sua árvore de trabalho, basta removê-lo com
Você pode usar a Árvore de origem atlasiana (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Basta selecionar arquivos da árvore e pressionar o botão "Remover" na parte superior. Os arquivos serão excluídos do repositório local e do banco de dados git local. Em seguida, confirme e empurre.
Isto é o que eu faço também. Tornou realmente fácil fazer isso, porém, aprender os comandos git é uma coisa boa a saber.
Micah Montoya
1
Um dos meus colegas sugeriu o BFG Repo-Cleaner, que eu acho poderoso. Não é apenas excluir dados indesejados, mas também limpar seu repositório de qualquer informação de confirmação relacionada.
Respostas:
Remova o diretório do git e local
Você pode fazer o checkout 'master' com os dois diretórios;
Remova o diretório do git, mas NÃO local
Conforme mencionado nos comentários, o que você normalmente quer fazer é remover este diretório do git, mas não excluí-lo totalmente do sistema de arquivos (local)
Nesse caso, use:
fonte
git rm -r myFolder
, funcionou, mas também excluiu tudo do diretório "MyFolder". Teve que reverter tudo no diretório "MyFolder" e depois confirmar.git rm -r --cached myFolder
git rm -r --cached directory/
remove apenas do git tracked, mas a estrutura do repositório permanece.Para remover a pasta / diretório apenas do repositório git e não do local, tente 3 comandos simples.
Etapas para remover o diretório
Etapas para ignorar essa pasta nas próximas confirmações
O arquivo .gitignore ficará assim
fonte
Se, por alguma razão, o que o karmakaze disse não funcionar, você pode tentar excluir o diretório que deseja usar ou com o navegador do sistema de arquivos (por exemplo, no Windows File Explorer). Após excluir o diretório, emitindo o comando:
git add -A
e depois
git commit -m 'deleting directory'
e depois
git push origin master
.fonte
Você pode tentar isso:
git rm -rf <directory_name>
Isso forçará a exclusão do diretório.
fonte
Se você remover os arquivos no diretório (com
git rm
as outras respostas explicadas), o diretório não existirá mais no que diz respeito ao git. Você não pode confirmar um diretório vazio nem remover um.Isso é diferente da subversão em que você precisa explicitamente
svn rm emptyfolder/
, e é por isso que aman
página do git se descreve como "o estúpido rastreador de conteúdo"Uma resposta em "Como faço para adicionar um diretório vazio a um repositório git" às perguntas frequentes sobre este assunto :
fonte
Eu já havia confirmado a pasta antes e também quero remover o diretório no histórico.
Eu fiz o seguinte:
Adicionar pasta a
.gitignore
:Remova de todas as confirmações:
remova os árbitros dos antigos commit:
Verifique se todas as referências antigas foram totalmente removidas
Executar uma coleta de lixo
envie as alterações para o repositório online:
Você terminou aqui.
Mas você pode fazer o seguinte para enviar todas as alterações para todos os ramos com: Mas tenha cuidado com este comando!
Depois disso, a pasta foi removida do git, mas não foi excluída do disco local.
fonte
para excluir pastas vazias
Eu queria excluir um diretório vazio (pasta) que criei, o git não pode excluí-lo, depois de algumas pesquisas, aprendi que o Git não controla diretórios vazios. Se você tem um diretório vazio em sua árvore de trabalho, basta removê-lo com
Não há necessidade de envolver o Git.
fonte
Vá para o diretório git e digite o seguinte comando: rm -rf < Directory Name >
Após excluir o diretório, confirme as alterações com: git commit -m "Your Commit Message"
Em seguida, basta enviar as alterações no diretório GIT remoto: git push origin < Nome da filial >
fonte
Você pode excluir a pasta localmente e pressionar, como a seguir:
fonte
Eu costumo usar
git add --all
para remover arquivos / pastas de repositórios remotosmaster
pode ser substituído por qualquer outra ramificação do repositório.fonte
Você pode usar a Árvore de origem atlasiana (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Basta selecionar arquivos da árvore e pressionar o botão "Remover" na parte superior. Os arquivos serão excluídos do repositório local e do banco de dados git local. Em seguida, confirme e empurre.
fonte
Um dos meus colegas sugeriu o BFG Repo-Cleaner, que eu acho poderoso. Não é apenas excluir dados indesejados, mas também limpar seu repositório de qualquer informação de confirmação relacionada.
fonte
Para adicionar um novo diretório:
Mas agora o Git não está ciente desse novo diretório, porque o Git mantém o controle de arquivos e não de diretórios.
O Git não estará ciente das alterações que fizemos, por isso, adicionamos um
.keep
arquivo oculto para que o Git fique ciente dessa nova alteração.Agora, se você pressionar
git status
Git, estará ciente das alterações.E se você deseja excluir o diretório, você deve usar este comando.
E se você verificou usando
git status
, verá que o diretório foi removido.fonte
O primeiro comando git precisa saber quem você é antes de excluir qualquer coisa
fonte
Uma combinação das 2 respostas funcionou para mim
se ainda mostrar algum aviso, remova os arquivos manualmente
fonte