Alterar 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 locale eu quero mudar seu nome para outro nome (digamos, de localpara xyz).

Mudá-lo manualmente através da GUI do GitHub é um pesadelo, pois preciso alterar o nome do diretório de cada arquivo separadamente (o GitHub ainda não incluiu a 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 nenhuma solicitação 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).

Sei que o objetivo principal do Git é baixar um projeto, alterar, testar e enviar para o provedor de hospedagem (GitHub neste caso), mas, para alterar apenas um diretório, desejo uma operação direta. Isso é possível com o Git?

Devo usar outro programa, talvez?

user9303970
fonte
2
Não, operações remotas diretas não são possíveis no Git. Você precisa clonar (baixar) o projeto, alterá-lo e retornar ao provedor de hospedagem. Mas como você está usando o Github sem ter o projeto no seu computador? Você está fazendo todas as alterações através da interface do usuário da web do Github - isso não parece muito conveniente ou eficiente.
user253751
Neste caso específico, usando a interface do usuário é geralmente bastante conveniente e eficiente para mim, a principal coisa que falta é a mudança de nome dir direta ...
user9303970

Respostas:

28

A mensagem de erro fatal indica que você está trabalhando em algum lugar que não é um clone do seu repositório git. Então, vamos começar pela clonagem do repositório git primeiro:

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

Em seguida, digite-o:

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 para o seu repositório git remoto:

git push

e você verá a alteração na interface do GitHub.

Stephen Kitt
fonte
14
Em outras palavras, é como qualquer outra operação nos arquivos do seu repositório Git.
Lightness Races in Orbit -
2
@LightnessRacesinOrbit, o solicitante parece estar usando a interface da web da Web para todas as alterações até agora.
user253751
5

Não, não há como fazer isso como uma operação direta, devido à maneira como o git está 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.

O Github, o Bitbucket ou qualquer outro provedor de hospedagem é essencialmente apenas outra cópia do seu repositório git, com uma bonita interface da Web no topo, que é tratada como uma fonte central de verdade na maioria dos fluxos de trabalho, no entanto, o utilitário git não sabe disso.

As alterações são rastreadas como confirmadas. Estou supondo que direct operation, você quer dizer uma maneira de alterar o nome da pasta sem criar uma confirmação. 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

git clone [url]
cd [git-folder]

Se você já possui uma cópia local do repositório, puxe-o para garantir que você esteja atualizado com o repositório remoto

git pull

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

git mv local xyz

O qual deve ser adicionado automaticamente à área de teste pelo github. Então você deve confirmar e enviar essas alterações.

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

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

Matt
fonte
8
Não, o histórico não é armazenado como alterações entre confirmações, cada confirmação é auto-sustentável. As alterações entre confirmações são recalculadas mediante solicitação sempre que forem necessárias.
Stephen Kitt
3
"todo o histórico é baixado em todos os locais" - não comgit clone --depth
user11153 14/0218
2
A reescrita do histórico não seria necessária para isso - o GitHub poderia gerar uma confirmação ao fazê-lo. (Assim como ele já faz ao editar arquivos diretamente no site.)
user1686