Eu tenho um repositório git que preciso clonar, fazer algumas coisas, depois empacotar e enviar para outras pessoas. Estou automatizando tudo isso por meio do Ansible para que não seja necessária a intervenção do usuário.
Quero garantir que depois que o repositório for clonado e antes de ser "empacotado", ele seja redefinido para o estado desejado (ramificação/tag), removendo assim quaisquer arquivos/pastas que possam ter sido adicionados à pasta/árvore de trabalho local após foi clonado. Para fazer isso, estou usando git reset --hard $ref
.
Isso faz um bom trabalho na remoção de arquivos indesejados, mas o problema é que se uma pasta vazia for adicionada ao diretório repo, ela não será removida.
Existe uma maneira do git remover pastas vazias e também arquivos?
git reset --hard
tem como alvo arquivos/pastas rastreados. Portanto, apenas os arquivos que o git conhece. Diretórios recém-criados que não foram processados, por exemplo,git add
não são incluídos.git clean
é algo que você está procurando, pois tem como alvo arquivos/pastas não rastreados. Use-d
sinalizador para garantir a recursão.