Altera um nome de diretório em um repositório do Github remotamente, diretamente do Linux Git local?

10

Este é o meu repositório Git:

https://github.com/benqzq/ulcwe

Ele tem um diretório chamado local e quero alterar seu nome para outro nome (digamos, de local para xyz ).

Alterá-lo através do GitHub GUI manualmente é um pesadelo, pois tenho que alterar o nome do diretório para cada arquivo separadamente (o GitHub ainda não incluiu uma funcionalidade de "renomeação do diretório", acredite ou não).

Depois de instalar o Git, eu tentei este comando:

git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit

Enquanto não recebi nenhuma solicitação da 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 ponto principal no Git é fazer o download de um projeto, alterar, testar e, em seguida, enviar para o provedor de hospedagem (GitHub, neste caso), mas apenas para alterar um diretório, desejo uma operação direta. É mesmo possível com o Git?

Devo usar outro programa, talvez?

    
por user9303970 14.02.2018 / 14:23

3 respostas

28

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:

git clone https://github.com/benqzq/ulcwe.git

Em seguida, digite:

cd ulcwe

e renomeie o diretório:

git mv local xyz

Para que a alteração seja compartilhável, você precisa confirmá-la:

git commit -m "Rename local to xyz"

Agora você pode enviá-lo ao seu repositório git remoto:

git push

e você verá a mudança na interface do GitHub.

    
por 14.02.2018 / 14:48
5

Não, não há como fazer isso como uma operação direta devido à maneira 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, Bitbucket ou qualquer outro provedor de hospedagem é essencialmente apenas outra cópia do seu repositório git, com uma linda interface web no topo, que é tratada como uma fonte central de verdade na maioria dos fluxos de trabalho, mas o utilitário git não sabe disso.

As alterações são rastreadas como confirmações. Eu estou supondo que por direct operation , você quer dizer uma maneira de alterar o nome da pasta sem criar um commit. Embora isso seja possível ao reescrever o histórico, eu não o recomendaria, especialmente se houver várias pessoas / máquinas com cópias do repositório do git, pois isso pode levar a inconsistências.

A maneira mais fácil de renomear uma pasta em um repositório git seria clonar localmente

git clone [url]
cd [git-folder]

Se você já tiver uma cópia local do repositório, puxe-o para verificar se está atualizado com o repositório remoto

git pull

Faça as alterações necessárias localmente

git mv local xyz

Que deve ser adicionado automaticamente à área de preparação pelo github. Então você deve cometer e empurrar essas mudanças.

git commit -m 'Renamed local to xyz'
git push

Isso cometerá a mudança no seu repositório local e, em seguida, enviará essas alterações para a cópia remota do repositório, neste caso, o Github.

    
por 14.02.2018 / 15:00
0

É possível renomear um diretório sem clonar o repositório, usando a API do GitHub. Não tenho conhecimento de nenhuma implementação.

Fonte: link

    
por 09.10.2018 / 17:02