{PT} O Git e o GitHub

Texto em construção

By Marília Melo Favalesso in PT Git GitHub

August 17, 2021

Você começou a escrever um trabalho com a colaboração de outras pessoas e se perdeu em um mar de versões e correções? Se você já passou por isso, quero dizer que existe uma solução linda e GRATUITA (bem, pelo menos para uso pessoal) que mudará sua vida: Git e GitHub!

Introdução

O Git é um software de controle de versões que visa gerenciar arquivos de texto, principalmente códigos de programação. Esta ferramenta funciona de forma semelhante aos sistemas em nuvem (Google Drive, Dropbox, Mega, etc.), em que podemos compartilhar edições de um script com uma equipe, além de retomar versões antigas de nossos arquivos. Resumidamente, Git examina as alterações feitas nos arquivos em um diretório e mantém essas informações para compartilhar com outros usuários e possibilitar a reversão das alterações feitas.

Além de ser uma ferramenta útil, o Git se conecta ao serviço de hospedagem e armazenamento de versão chamado GitHub. A partir do GitHub, é possível contribuir com projetos de qualquer parte do mundo, além de compartilhar nossos códigos para fins de divulgação e colaboração.

Como funciona o controle de versões?

O Git é um exemplo de sistema de controle de versão distribuído (DVCS) comumente utilizado para código aberto e desenvolvimento de softwares. Os DVCSs permitem acesso total a todos os arquivos, ramificações e iterações de um projeto e permitem que todos os usuários acessem um histórico completo e independente de todas as alterações.

Usando o Git, você pode fazer upload de novas versões de um projeto para um repositório (em outras palavras, um servidor) onde seus arquivos serão armazenados e o histórico de suas versões será salvo. Nesse caso, nosso armazenamento estará no GitHub. Todos os colaboradores/desenvolvedores podem acessar e recuperar a versão mais recente do projeto disponível no GitHub e copiar em suas máquinas locais (seus computadores). Eles podem trabalhar nisso e continuar o processo de desenvolvimento em paralelo com outros colegas. Com cada alteração feita, você pode enviar suas alterações para o repositório e atualizar sua versão de outras feitas por outros desenvolvedores.

Por exemplo: Digamos que você esteja escrevendo seu Trabalho de Conclusão de Curso (TCC) e deseja compartilhar o desenvolvimento com a sua orientadora e coorientadora. Inicialmente, você precisará criar um projeto com o Git em sua máquina local. Com o tempo e conforme o seu texto evolui, você pode enviar suas alterações para um repositório no GitHub. Para fazer isso, você criará um branch (braços ou branches) no projeto principal (otrunk, chamado branch master) e enviará esse projeto para o Github. Com o tempo, suas orientadoras também mudarão este projeto e os salvarão em seus próprios branches la no Github.

Quando as suas orientadoras concluírem uma etapa, elas farão um pull request para informá-la de que uma correção foi concluída e está disponível em seu repositório virtual. Sempre que um contribuidor envia alterações para GitHub, um alerta de atualização de versão é gerado solicitando que você baixe a versão mais recente do projeto para sua máquina local (git pull). O Git fará o upload das correções recém-adicionadas e permitirá que você combine sua versão com a das orientadoras (git merge). Além disso, o Git também mostrará onde as correções foram feitas (trechos de texto adicionados ou removidos) e casos de conflito onde as linhas podem ser substituídas, oferecendo opções para mesclar manualmente os manuscritos.

Termos importantes

Para usar o Git, os desenvolvedores usam comandos específicos para copiar, criar, alterar e combinar código. Esses comandos podem ser executados diretamente da linha de comando do Git ou usando um aplicativo como o GitHub desktop ou RStudio. Aqui estão os comandos mais comuns para usar o Git:

  • git init inicializa um novo repositório Git e começa a rastrear um diretório existente. Ele adiciona uma subpasta oculta dentro do diretório existente com a finalidade de hospedar a estrutura de dados interna necessária para o controle de versão.

  • git ignore especifica arquivos que não serão verificados, ou seja, arquivos que o Git deve ignorar.

  • git clone cria uma cópia local (na sua máquina) de um projeto que já existe remotamente. O clone inclui todos os arquivos, histórico e branches do projeto. Ao clonar um repositório, as alterações que você realizar não entrarão no projeto principal se não for sequênciada de um fork ou estiver associada por um branch.

  • git status mostra o status das alterações dos arquivos.

  • git branch são branches de trabalho que permitem edições paralelas em nosso arquivo sem alterar o projeto principal (branch master). Em geral, um branch de desenvolvimento é uma bifurcação no estado do código que cria um novo caminho para sua evolução. Ramificações podem estar relacionadas a diferentes tipos de trabalho que compõem nosso projeto (por exemplo, introdução, métodos, resultados e discussão).

  • git merge é a união de duas branches, geralmente realizada no branch master, quando queremos reunir as diferentes partes em um único arquivo (ex. introdução, métodos, resultados e discussão em TCC).

  • git pullatualiza o pipeline de desenvolvimento local com atualizações de sua contraparte remota. Se um colega de equipe realizou mudanças no projeto/ramificação, você pode baixar essas mudanças no seu computador com esse comando.

  • git push atualiza o repositório remoto com quaisquer commits feitos localmente para um branch.

Saiba mais em um guia de referência completo para comandos Git.

O que é um repositório GitHub?

O Git é todo o acervo de arquivos e pastas associados a um projeto, somado ao histórico de versões de cada arquivo. Cada vez que salvamos uma alteração em um arquivo (ou commitamos), geramos um histórico de alterações para esse objeto. Todas as versões criadas são listadas pelo Git e podem ser organizadas em várias linhas de desenvolvimento chamadas Branches. Já o Hub é um aparelho utilizado na área de informática que permite a conexão de computadores a uma rede para compartilhar informação, sendo a nomenclatura em GitHub associada a conexão entre profissionais de programação de qualquer lugar do mundo.

Para utilizar o GitHub é necessário criar uma conta pessoal ou uma conta de equipe em https://github.com/. Para criar a sua conta, entre no GitHub e preencha os dados solicitados — nome, e-mail e senha. Em alguns minutos, você vai receber um e-mail de confirmação para começar a utilizar a plataforma. Além das contas individuais e gratuitas, também existem aquelas destinadas a trabalhos em equipe e que são pagas.

Após confirar o seu e-mail para o GitHub, você estará livre para explorar a ferramenta. Para isso você pode utilizar o guia Hello World Guide que o orientará como criar o seu primeiro repositório, fazer um branch ou abrir um pull request.

Mas porque usar o controle de versões?

(tradução livre dos comentários em “Why should I use version control?”)

Você já:

  • Teve que manter várias versões de um produto?

  • Fez uma alteração no código, percebeu que era um erro e queria voltar?

  • Perdeu o código ou tinha um backup antigo?

  • Quis ver a diferença entre duas (ou mais) versões do seu código?

  • Quis provar que uma determinada alteração quebrou ou consertou um trecho de código?

  • Quis revisar o histórico do código?

  • Desejou enviar uma alteração no código para outra pessoa?

  • Desejou compartilhar seu código ou permitir que outras pessoas trabalhem nele?

  • Quis ver quanto trabalho está sendo feito e onde, quando e por quem?

  • Desejou experimentar um novo recurso sem interferir no trabalho do código?

Nestes casos, e sem dúvida em outros, um sistema de controle de versão deve tornar sua vida mais fácil.

Mesmo se você trabalhar sozinho, pode se beneficiar do Git pelos seguintes motivos:

  • Você não perde nada. Você pode deletar frações de seu código e recuperá-las depois de algum tempo verificando antigos commits.

  • Você pode experimentar à vontade. Se não resolver o problema, inverta o que foi feito.

  • Você pode consultar as versões anteriores do seu código para descobrir quando e onde os bugs foram introduzidos.

  • Recursos mais “avançados”, como ramificação e mesclagem, permitem que você tenha várias linhas paralelas de desenvolvimento. Você pode trabalhar em dois recursos simultaneamente sem interferência e alternar para frente e para trás sem muito trabalho.

  • Você pode “ver o que mudou”. Freqüentemente, iniciamos o fluxo de trabalho individual com uma pergunta: o que eu fiz ontem?

Vá em frente e experimente. Comece devagar com o básico e aprenda mais à medida que avança.

Convencido? Bem-vindo ao clube!