Illustration of a bird flying.

Repositório git em pasta existente


[vc_row][vc_column][vc_column_text]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 [email protected]/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 [email protected]/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 [email protected]/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.[/vc_column_text][/vc_column][/vc_row][vc_row title=”Interesse em TDD?” title_tag=”h2″ title_size=”h3″ color=”custom” bg_color=”#422b72″ text_color=”#ffffff” controls=”right” btn_link=”url:https%3A%2F%2Ftddcomphp.com.br||target:%20_blank|” btn_label=”Conheça o livro” btn_style=”solid” btn_color=”white” btn_size=”20px” btn_icon=”” btn_iconpos=”left” second_button=”” btn2_link=”” btn2_label=”Click Me” btn2_style=”solid” btn2_color=”secondary” btn2_size=”15px” btn2_icon=”” btn2_iconpos=”left”][vc_column][/vc_column][/vc_row]

,