2
respostas

Problema no Github

Eu criei no Github um repositório chamado "Alura" e nele tem as pastas representando as formações e dentro das pastas de formações tem os projetos que podem ser criados do zero pelo meu pc ou podem vir do github de um fork meu. Se vier do meu fork, por exemplo, não devo clonar diretamente o projeto dentro da pasta de formação específica pois isso vai gerar um arquivo ".git" dentro do repositório "Alura" que também tem o ".git", o certo seria em vez de clonar diretamente, fazer com que seja um submódulo, pois se não fizer isso vai dar um "bug" na hora de enviar para o repositório "Alura" no github, o projeto vai ficar com um uma seta e quando clicarmos nele não vai abrir o repositório correto, simplesmente não vai acontecer nada.

Não sei se consegui explicar muito bem o "bug" que acontece, mas quem entender melhor esse fenômeno pode explicar melhor?

2 respostas

Ola!

O que rola é que, ao clonar um repositório dentro de outro que já possui um .git, o Git entende que aquele diretório interno é um repositório independente. Quando você adiciona e commita no repositório “Alura”, o Git não versiona o conteúdo interno desse projeto, apenas registra uma referência para ele. No GitHub, isso aparece como uma pasta com uma seta, indicando que ali existe outro repositório e não arquivos comuns.

Esse estado é chamado de repositório aninhado. Como o repositório interno não está configurado como submódulo, o GitHub não sabe “para onde apontar”, então ao clicar não abre nada. O Git só aceita oficialmente esse tipo de relação quando você usa submódulos, pois aí ele registra corretamente o repositório externo e o commit exato que deve ser usado.

Por isso, você tem basicamente duas opções corretas: ou não versionar o projeto interno como um repositório (removendo o .git dele e tratando como código comum), ou usar submódulos quando quiser manter um repositório dentro de outro. Clonar diretamente dentro da pasta sem usar submódulo sempre vai gerar esse comportamento confuso no GitHub, porque o Git não foi feito para “misturar” repositórios dessa forma.

O que eu faria? Não misturaria tudo assim, criaria um repositório pra cada projeto, se não quiser deixar exposto pra todo mundo você pode deixar privado.

Abraços.

Entendi. Sobre essa parte: "O que eu faria? Não misturaria tudo assim, criaria um repositório pra cada projeto, se não quiser deixar exposto pra todo mundo você pode deixar privado.", eu acho que colocar "Alura" como o repositório principal e ter as pastas dentro dele referentes a cada formação e dentro de cada pasta ter os respectivos cursos é uma maneira mais organizada do que ter que procurar o repositório do curso solto em meio a muitos outros repositórios existentes na sua conta.