Este é o meu repositório Git:
https://github.com/benqzq/ulcwe
Ele tem um diretório chamado local
e quero mudar seu nome para outro nome (digamos, de local
para xyz
).
Alterá-lo manualmente por meio da GUI do GitHub é um pesadelo, pois preciso alterar o nome do diretório para cada arquivo separadamente (o GitHub ainda não incluiu uma funcionalidade "Renomear diretório", acredite ou não).
Depois de instalar o Git, tentei este comando:
git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit
Embora não tenha recebido nenhum prompt para minha senha do GitHub, recebi este erro:
fatal: Not a git repository (or any parent up to mount point /mnt/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Eu sei que o objetivo do Git é baixar um projeto, alterar, testar e, em seguida, enviar para o provedor de hospedagem (GitHub neste caso), mas para apenas alterar um diretório, desejo uma operação direta. Isso é possível com o Git?
Devo usar outro programa, talvez?
A mensagem de erro fatal indica que você está trabalhando em algum lugar que não seja um clone do seu repositório git. Então, vamos começar clonando o repositório git primeiro:
Em seguida, insira-o:
e renomeie o diretório:
Para que a alteração seja compartilhável, você precisa confirmá-la:
Agora você pode enviá-lo para o seu repositório git remoto:
e você verá a mudança na interface do GitHub.
Não, não há como fazer isso como uma operação direta devido à forma como o git é estruturado.
A maneira como o git funciona é que ele armazena uma cópia de todo o repositório, incluindo todo o histórico, em cada local.
Github, ou Bitbucket, ou qualquer outro provedor de hospedagem é essencialmente apenas outra cópia do seu repositório git, com uma bela interface web no topo, que é tratada como uma fonte central de verdade na maioria dos fluxos de trabalho, porém o utilitário git não sabe disso.
As alterações são rastreadas como confirmações. Suponho que por
direct operation
, você quer dizer uma maneira de alterar o nome da pasta sem criar um commit. Embora isso seja possível reescrevendo o histórico, eu não o recomendaria, especialmente se houver várias pessoas/máquinas com cópias do repositório git, pois isso pode levar a inconsistências.A maneira mais fácil de renomear uma pasta em um repositório git seria cloná-la localmente
Se você já tiver uma cópia local do repositório, puxe-a para garantir que esteja atualizado com o repositório remoto
Faça as alterações necessárias localmente
Que deve ser adicionado automaticamente à área de preparação pelo github. Em seguida, você deve confirmar e enviar essas alterações.
Isso confirmará a alteração em seu repositório local e enviará essas alterações para a cópia remota do repositório, neste caso, o Github.
É possível renomear um diretório sem clonar o repositório, usando a API do GitHub. Desconheço qualquer implementação.
Fonte: https://stackoverflow.com/a/31567094/370786