Hoje eu quero falar sobre uma ferramenta que é essencial na vida de qualquer programador.
O Famoso Git.
Existe muita confusão entre os iniciantes a respeito desse assunto e isso é comum devido a grande quantidade de palavras chaves quando falamos de Git, GitHub, GitLab, etc…
Então, eu vou esclarecer de uma vez por todas o que é o Git e os comandos básicos para você começar a usar.
O Git é um sistema de versionador de arquivos, ou seja, ele gera versões únicas para cada alteração dos arquivos do projeto.
Esses arquivos são armazenados de uma forma que conseguimos navegar em qualquer versão.
Foi projetado e desenvolvido por Linus Torvalds para ser usado no desenvolvimento do kernel Linux, mas foi adotado por muitos outros projetos e hoje é o padrão da indústria.
O Git é praticamente uma maquina do tempo dentro do código.
Isso é muito útil, pois, caso um bug seja introduzido em uma alteração, é simples voltar essa aplicação para a última versão estável, corrigir o bug e gerar uma versão nova com a correção.
E como o git funciona?
É importante entender essa parte teórica para você conseguir utilizar a ferramenta de maneira mais efetiva.
O Git funciona com um conceito de repositórios que podem ser locais ou remotos. O repositório é onde vai ficar armazenado todos os arquivos e alterações e também nosso código-fonte do projeto.
E cada repositório utiliza sistema de branchs (ou em português, “galhos”).
Quando você cria um repositório, automaticamente é gerado uma nova branch que vai ser a “raiz” do seu projeto e também originar todas as outras branchs que vão ser criadas no futuro.
Através desse sistema é possível você criar coisas novas ou alterar coisas dentro da sua base de código de uma maneira que não afete ou nem mesmo tenha ligações com outras branchs.
Sistema de branchs ilustrado
Dentro das branchs usamos ainda outro conceito que torna a forma de trabalhar com o git ainda mais granular, os commits.
As branchs representam os galhos na nossa árvore de alteração e os commits representam as folhas, cada commit é um checkpoint que pode ser acessado a qualquer momento através da nossa maquina do tempo.
Na ilustração podemos ver vários caminhos que representam os branchs e varias bolinhas coloridas que representam os commits.
Cada commit é composto por uma mensagem para indicar o que está sendo feito na alteração ou se é um merge, pelas modificações que foram feitas, o autor dessas alterações, data e hora que do commit e por um código identificador único que é gerado pelo git.
Quando nós trabalhamos em uma base de código usando o git, é normal criar varias branches e dentro de cada branch podemos criar dezenas de commits até chegar um ponto onde essa alteração esteja madura o suficiente para ser mesclada ao branch raiz incorporando todas aquelas alterações, nós chamamos isso de merge, que é um commit que é feito na nossa raiz.
Leia também: Por quê faltam devs no Brasil?
Como Instalar o Git?
Bom agora que já falamos da teoria, vamos aprender e ver como isso funciona na prática, para demonstrar eu vou utilizar só o terminal.
Para quem não tem prática ou não gosta de usar o terminal, existem vários programas visuais que integram com o git, um exemplo é o Git Kraken, eu particularmente prefiro usar o terminal, mas se você quiser testar vou deixar o link aqui.
Antes de tudo você precisa instalar o git, se você tiver no windows basta baixar o .exe do site oficial.
Se você utiliza Linux como eu, basta instalar através do gerenciador de pacotes da sua distribuição, como eu estou utilizando o Ubuntu, só preciso executar o comando:
$ sudo apt install git
Com a instalação concluída, o que precisamos para começar a usar o git é de algo para versionar. No meu caso vou usar a pasta onde eu guardo os scripts que fiz nos vídeos do canal.
Vou navegar até a pasta através do terminal utilizando o comando cd
do Linux, se você estiver no windows, você pode clicar com o botão direito na pasta e abrir com um novo Gitbash.
Bom, uma vez estando dentro da pasta que eu vou iniciar meu repositório, precisamos executar um comando do git para iniciar um repositório nessa pasta, o comando é o seguinte:
$ git init
Esse comando inicia um novo repositório na pasta em questão.
Em seguida podemos executar o comando:
$ git status
Para ver todos os aquivos que o git já identificou que não estão sendo rastreados então, precisamos fazer um commit inicial para gerar nosso commit raiz.
Mas antes precisamos alterar o nome da nossa branch para main
, o git por padrão cria a branch inicial como master
, porém esse é um termo retrogrado que está sendo removido do ecossistema de tecnologia. Para alterar o nome de uma branch utilizamos o comando:
git checkout -b main # nome novo da branch é o ultimo parametro
Agora que já alteramos o nome da branch, podemos gerar nosso commit inicial. Como a gente faz isso?
Primeiro temos que sinalizar para o git que queremos que adicione os arquivos no rastreador, para ser possível fazer o commit desses arquivos.
$ git add . # aqui usamos "." pra sinalizar que queremos sinalizar a pasta toda
Agora se executarmos os comando status
novamente podemos ver que o git já ta rastreando esses arquivos:
$ git status
Percebe a mudança que aconteceu? Mas como podemos ver ainda não foi “commitado”, então para continuar o processo precisamos executar mais um comando pro git gerar o commit pra gente:
$ git commit -m "Initial commit"
Aqui você pode observar que eu passo uma mensagem entre aspas, essa é a mensagem que eu comentei anteriormente que vai indicar o que foi feito, como estamos criando o repositório agora, vou colocar um texto genérico.
Outra coisa importante de falar, é que, a cada nova modificação que você quer que vá para o servidor, é necessário adicionar os arquivos modificados ao rastreador e fazer um novo commit, esses dois comandos são os mais utilizados no dia a dia.
Com isso temos nosso primeiro commit, a princípio pode parecer burocrático ou complicado, mas a maior parte desse trabalho é por que estamos criando um repositório do zero.
Seguindo esses passos nosso repositório já está versionado. Porém, apenas localmente, na minha máquia, eu não consigo distribuir esse Código via git para outra pessoa se eu não abrir um servidor de git na minha maquina, ou se eu não tiver um espelho do meu repositório em um servidor remoto.
É nesse ponto que sites como o GitHub ou GitLab entram, essas plataformas são servidores de repositórios, elas nos fornecem um repositório remoto de forma que é possível compartilhar o código publicamente com várias outras pessoas, ou de forma privada onde só você ou pessoas selecionadas tenham acesso.
Então para compartilhar seu código com outras pessoas ou ter um backup é interessante você ter uma conta nessas plataformas.
Agora vamos recapitular o conceito básico. Para utilizar o git
, você precisar criar um repositório usando o git init
, ou se já tiver um repositório, basta rastrear as alterações usando git add <Nome do arquivo> ou <pasta>
, após você colocar as alterações para o rastreador pode conferir utilizando o comando git status.
E por último mais não menos importante você precisa versionar de fato com o commit através do comando git commit
. Essa é a linha do tempo de um repositório, do início até o ponto que você pode enviar essas alterações para um servidor remoto.
Como subir o código no GitHub?
Vamos utilizar o GitHub para exemplificar como subir seu projeto para o servidor remoto, então depois que você tiver uma conta na plataforma.
O que vamos fazer é criar um novo repositório clicando no botão new.
Após clicar em “new”, você vera a seguinte tela:
Nessa tela, o que precisamos fazer é escolher um nome para o repositório. Este pode ser o nome da pasta que você iniciou, ou outro da sua escolha, eu vou colocar como cryspy-train
.
Você pode escrever uma descrição que também sobre o que é seu projeto, mas isso é opcional. E por último vamos escolher se o repositório pode ser publico ou privado, ao selecionar, basta clicar em “create repository”.
Agora para subirmos o código da nossa maquina precisamos primeiro adicionar o endereço do remoto no nosso projeto, e como fazemos isso? Primeiro precisamos identificar o endereço do remoto.
No caso a URL do remoto é essa que vai está em destaque na sua pagina, igual na imagem. Agora a você precisa copiar o link e adicionar ao repositório usando o comando:
$ git remote add <Nome do servidor> <Url do servidor>
No caso o nome padrão do remoto que é utilizado é origin
, o meu comando ficaria dessa forma:
$ git remote add origin <https://github.com/jorgeluisrezende/crispy-train.git>
Esse comando não tem retorno, então se você quiser conferir se deu certo ou não, existe um outro comando que você pode usar para conferir todos os remotos no seu repositório, este é o seguinte:
$ git remote -v
Como subir seu projeto para um Repositório?
Bom é assim que fazemos o setup de um servidor em nosso repositório, agora precisamos enviar o código para nosso remoto. Para isso temos que conhecer o comando push
que é utilizado para enviar o ultimo commit
feito na branch
que você estiver para o servidor que você desejar.
Então como fizemos um commit
inicial, vamos enviar o mesmo para o servidor da seguinte forma:
$ git push <Nome do Remoto> <Nome do branch>
Nesse caso, o comando ficaria assim:
$ git push origin main
O retorno esperado é algo como a imagem. Se voltarmos ao github podemos ver nossos arquivos através da interface.
Outro comando importante é o comando para buscar as alterações do servidor que segue esse mesmo padrão:
$ git pull <Nome do Remoto> <Nome da branch>
Como criar uma branch?
Com isso concluímos um ciclo completo de um setup de um repositório, do começo ao fim. Mas, na prática, vamos precisar criar branchs para alterações novas no nosso código, sabendo disso, como a nós podemos iniciar uma branch? para criar uma branch, nós utilizamos o seguinte comando:
$ git checkout -b <Nome do branch>
No caso, vou criar uma branch nova para demonstrar:
$ git checkout -b branch_exemplo
O legal é que se eu remover a flag -b
esse mesmo comando pode ser usado para trocar entre branchs que já existem, por exemplo:
$ git checkout main
Dessa forma eu volto para branch main.
Como clonar um repositório?
Agora por último, mas não menos importante, como que eu clono um repositório de um remoto para a minha maquina? Você precisa é de ter acesso ao repositório caso ele esteja em uma plataforma como o github.
Tendo o acesso, você só precisa do endereço, no github fica meio escondido, você basta clicar no botão escrito “code”, por exemplo:
Vai abrir esse popup com a URL, com esse endereço em mãos vamos voltar pro terminal e ver o comando:
$ git clone <https://github.com/jorgeluisrezende/crispy-train.git>
Esse comando cria uma pasta nova com o nome que demos ao repositório, e vai fazer o download sobre todos os arquivos do servidor na minha máquina.
Conclusão
Bom pessoal, espero que esse material tenha sido claro para entender o que é o git e como usar de forma simples.
Eu sugiro que você leia a documentação do git para aprender mais, e pratique todos os dias, assim logo você estará dominando a ferramenta!