Repositório git em pasta existente

Pra quem não conhece, o git é um sistema de versionamento open-source criado por Linus Torvalds, o mesmo criador do Linux. Existem diversas formas e necessidades de se trabalhar com repositórios versionados pelo git.

Uma dessas formas que para quem não conhece pode ser um pouco espinhosa é clonar um repositório em uma pasta já existente. Isto é necessário geralmente quando você está publicando sua aplicação e a versão do git não permite clone em pasta existente. Acredite, isso é necessário em muitas hospedagens antiquadas.

Mão na massa – preparando nosso repositório

Peguemos como exemplo uma aplicação web. Normalmente os servidores nos fornecem o diretório public_html ou www ou ainda httpdocs. Pois bem, já percebeu que ao clonar um repositório versionado pelo git você comumente enfrenta as situações a seguir: Clona dentro do diretório público do servidor, ficando algo como public_html/nome-do-projeto-clonado; Ou tenta-se clonar fora do diretório “git clone git@github.com/user/nome-do-projeto public_html” o public_html do final do comando é pra onde você deseja enviar o repositório recém clonado. No entanto ocorre um erro pois a pasta já existe e o git aborta o clone.

Frente à este problema mostrarei pra quem ainda não fez este procedimento como clonar com sucesso um repositório versionado pelo git em uma pasta existente.

Primeiramente entre na pasta que deseja que a aplicação esteja rodando (lembre-se que estamos falando aqui de um ambiente web, por isso utilizaremos a pasta public_html como exemplo).

cd public_html

git clone git@github.com/user/nome-do-projeto tmp && mv tmp/.git . && rm -fr tmp && git reset --hard

Perceba que separei os comandos por cores para poder explicar o que cada bloco faz.

git clone git@github.com/user/nome-do-projeto tmp – Clona o projeto existente no github em uma pasta temporária. Neste momento a pasta .git encontra-se em public_html/tmp/.git

mv tmp/.git . – Move a pasta que contém os índices e objetos do git para fora da pasta tmp. Neste momento a pasta .git encontra-se em public_html/.git

rm -fr tmp – Agora removemos a pasta temporária pois não mais a utilizaremos. Neste momento o conteúdo de public_html é somente “.git/”

git reset –hard – Forçamos o reset do repositório. Com isso todos os índices serão lidos e criada toda a estrutura de sua aplicação dentro da pasta public_html. Neste momento além da pasta “.git/” existe toda a estrutura de pastas e arquivos de sua aplicação.

É isso, pra muita gente isso pode ser muito simples de fazer, no entanto penso em programadores que estão iniciando no mundo do git. Isto geralmente é uma grande dificuldade, assim como foi pra mim, quando comecei a trabalhar com este sistema de versionamento. Sem contar que como já mencionado, em hospedagens antiquadas (infelizmente o que mais tem no Brasil) a versão do git é muito antiga e obriga a gente a rodar o comando ensinado aqui.

Nas versões mais novas do git é possível clonar em uma pasta já existente.

Menu