Git: Renomear um diretório em um ramo
Pergunta
Eu tenho um projeto usando Git onde eu ramificou-se de mestre para mudar o nome de um diretório.
A renomeação no ramo funciona como esperado. Quando eu voltar para o branch master do diretório tem seu nome original, mas há também uma árvore de diretório vazio com o nome que eu mudei para no ramo.
Este é o comportamento esperado?
Am I faltando uma etapa?
Eu só preciso excluir essas árvores de pastas vazias como eles aparecem?
Eu sei Git não rastrear diretórios vazios e que pode ser um fator aqui.
Meu trabalho atual é:
# create and checkout a branch from master
/projects/demo (master)
$ git checkout -b rename_dir
# update paths in any affected files
# perform the rename
/projects/demo (rename_dir)
$ git mv old_dir new_dir
# add the modified files
/projects/demo (rename_dir)
$ git add -u
# commit the changes
/projects/demo (rename_dir)
$ git commit -m 'Rename old_dir to new_dir'
eu chegar a este ponto e tudo é como esperado:
# old_dir has been renamed new_dir
/projects/demo (rename_dir)
$ ls
new_dir
O problema surge quando eu voltar para o mestre:
/projects/demo (rename_dir)
$ git checkout master
# master contains old_dir as expected but it also
# includes the empty directory tree for new_dir
/projects/demo (master)
$ ls
old_dir new_dir
new_dir é uma árvore de diretórios vazia, então git não vai segui-lo -. Mas é feio ter lá
Solução
Sim, você pode removê-lo. Você também pode usar git clean -d
para remover o diretório.
Outras dicas
É bastante provável que você tenha arquivos ocultos no novo diretório. "Ls -a newdir"