Olá Chia Fo, tudo bem? Espero que sim
Peço desculpa pela demora em lhe trazer uma resposta.
Suas dúvidas são enriquecedoras e muito pertinentes a respeito do Git, obrigado por trazer essa discussão no fórum. Irei responder cada pergunta separadamente para que possa gerar uma maior compreensão:
- 1- Cada git init define um repositório local que depois vai servir de referência para enviar ao GitHub?
- Isso mesmo. Ao utilizar o git init transformamos o diretório atual em um repositório do Git e posteriormente podemos enviar esse repositório para o Github. O comando
git init
inicia o monitoramento na pasta, rastreando os novos arquivos e também, modificações.
- 2 - E para cada projeto novo abro uma pasta local e dou git init ?
- Se o objetivo for rastrear as modificações desse projeto sim, caso queira ter um controle de versões desse projeto, o primeiro passo é sim executar o
git init
para que o diretório local possa ser rastreado.
- 3 - A estrutura local vai ser replicada no GitHub respeitando pastas e subpastas?
- Sim, será respeitada. Porém, vale ressaltar que para isso o comando
git init
deve ser utilizado dentro da pasta "pai" das subpastas.
- 4.- A pasta onde já estou trabalhando com o código, pode ser a referência para o repositório local e se afirmativo existe algum risco de perda de arquivos por erro de comando digitado pelo usuário novato ?
- Pode sim ser referência, porém, quando estamos trabalhando no mercado de trabalho e consequentemente em equipe, fazemos o uso das branchs, que são ramificações dentro do Git, onde cada pessoa terá seu histórico próprio do Git. Ou seja, se o usuário Paulo modificar o código, isso não afeta o seu, pois cada pessoa terá uma estação de trabalho diferente. E para juntar essas estações de trabalho, geralmente é passado por uma revisão técnica feita pela pessoa mais experiente antes de apenas mergiar (
git merge
) nos códigos. Porém, caso ambas pessoas trabalhem em uma mesma branch/ramificação, em caso de erros, é possível tentar recuperar os arquivos fazendo uma volta nos commits
, mas, dependendo do que for feito, pode ser definitivo.
- 5 - Se tiver uma estrutura de pastas como GitProj/Proj1/Proj2/ ... dou git init em cada sub pasta ? Pois teoricamente são repositórios diferentes para cada projeto ?
- Se cada projeto possui uma finalidade diferente, sim, devemos executar o
git init
em cada subpasta. Mas, caso ambos projetos pertençam a um mesmo nicho, basta executar o git init
na raiz do projeto que todas as subpastas dele são rastreadas.
Caso queira se aprofundar ainda mais nos conhecimentos de Git, recomendo um artigo sobre os novos comandos, sendo que um deles facilita muito a recuperação dos arquivos, um curso aqui da Alura, onde você irá aprender a trabalhar em equipe utilizando o git, utilizará branchs, pull requests, dentre outros:
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓良好的学习!