Skip to content

Conceitos fundamentais da ferramenta de controle de versão Git e do modelo de fluxo de trabalho GitFlow.

License

Notifications You must be signed in to change notification settings

WebTech-PUC-Minas/lab-git-gitflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

😄 Laboratório Git e GitFlow

Em primeiro lugar, entenda alguns conceitos importantes:

O que é o Git? 🤔

A ferramenta Git

O Git é um sistema de controle de versão distribuído amplamente usado na área de desenvolvimento de software. Ele permite que você rastreie e gerencie alterações em arquivos, crie ramificações para desenvolver recursos independentes e mescle essas mudanças de forma eficiente. É uma ferramenta fundamental para o desenvolvimento colaborativo, ajudando a manter o código organizado e permitindo o trabalho em equipe de maneira eficaz.

O que é GitFlow? 💭

Gitflow é um modelo de fluxo de trabalho que busca simplificar e organizar o versionamento de ramificações de um projeto de desenvolvimento no Git.

Main: é a ramificação principal que contém o código-fonte em produção. Não é permitido realizar alterações (commit) diretamente nessa ramificação. A Master ainda é utilizada para enviar os commits dos releases para a produção;

Develop: criada a partir da ramificação Main, ela reúne os códigos de todos os ramos e se comunica com a Main. Ela contém o código-fonte mais atual e todas as novas features estáveis que serão mescladas posteriormente;

Feature: criada a partir da ramificação Develop, é uma branch temporária que carrega uma nova funcionalidade para o projeto, ela sempre acabará sendo mesclada à própria Develop através de merge. E segue um padrão de nomenclatura “feature/new-feature”.

Release: é uma ramificação temporária que fará com que os novos recursos armazenados na Develop sejam mesclados na branch Master, recebendo uma tag que indica a nova versão do projeto.

Hotfix: é uma ramificação utilizada para mesclar correções na ramificação principal decorrente de bugs identificados no processo de desenvolvimento. Após a correção do bug, o código irá tanto para a branch main como para a Develop. Essa branch também recebe uma tag indicando a nova versão na Main.


Instalando a ferramenta: ⚙️

Vídeos explicativos: 🎥

Instalação Git (MacOs e Linux) -> https://youtu.be/MoXJ4ypR_ZE?si=rwTABq8eckUXjtdq

Configuração Git (Windows, MacOS e Linux) -> https://youtu.be/aQjqmC5EfH0?si=oTkoBOUdzmWgO98b

Instalando a ferramenta no sistema Windows 10 e 11:

1. Em primeiro lugar, você deve entrar no site do Git (https://git-scm.com) e** você encontrará uma tela assim:**

Site da ferramenta Git

  1. Clique na opção Downloads e escolha seu sistema operacional (Nesse caso, será Windows):

Aba de Downloads do Site Git

Escolhendo o tipo de Sistema (32-bits ou 64-bits)

  1. Após executar o arquivo de instalação, clique em install e apenas prossiga as abas com a opção next, pois o Git será instalado nos caminhos padrão da ferramenta.

Instalador da Ferramenta Git

Pronto! Você conseguiu instalar a ferramenta Git com sucesso na sua máquina com sistema operacional Windows! 😀

Configurando a ferramenta (Windows 10 e 11):

  1. Abra o aplicativo Git Bash e digite o seguinte código (sem o $):
$ git config --global user.name "Nome_usuário"

Nesse código estamos configurando o nome de usuário da máquina, ou seja, coloque de preferência o seu nome ou o nickname da sua conta do GitHub (ela será criada em breve, mas já pense no nome).

Obs: Se não retornar nada, ou seja, uma linha vazia, será um sinal que está tudo correto!

Configurando o nome de usuário

  1. Agora, digite o código abaixo para configurar o email (sem o $):
$ git config --global user.email "email"

Configurando o email

  1. Prontinho! Agora, para verificar se a configuração está correta, basta digitar o código abaixo (sem o $):
$ git config --list

A opção user.name está com meu nome e a user.email está com meu email! Assim, você concluiu a configuração inicial da ferramenta Git no sistema Windows! 😝


GitHub:

O que é o GitHub?🧐

O GitHub é uma plataforma de hospedagem de código-fonte baseada na web, que utiliza o sistema de controle de versão Git. Ele permite que desenvolvedores colaborem em projetos, acompanhem mudanças feitas no código, gerenciem versões e trabalhem em equipe de forma eficiente. Ele é amplamente utilizado pela comunidade para gerenciar projetos, colaborar em código, e compartilhar conhecimento, tornando-se uma parte essencial do ecossistema moderno de desenvolvimento de software.

Criando a conta do GitHub: 😎

  1. Acesse o site do GitHub (https://github.com) e clique em sign up:

Site do GitHub

  1. Coloque suas informações pessoais (nome, email, senha, nickname) para criar a conta:

Exemplo de criação de conta

  1. Após essa etapa, o GitHub pedirá uma autenticação que é, geralmente, enviada ao email escolhido.

Autenticações: 👮

Uma parte importante do trabalho é manter sua conta segura, então o GitHub fornece métodos de segurança para protegê-la:

Usuário e senha:

O método de "usuário e senha" consiste em, quando o colaborador do projeto for realizar alguma modificação ou entrar em sua conta, o sistema pedirá só o usuário e a senha. Esse é a maneira menos segura para verificar a autenticidade.

Tokens:

Tokens são senhas geradas pelo próprio GitHub, elas são métodos mais seguras que as senhas normais, pois são geradas aleatoriamente e com grande número de de caracteres. Além disso, você pode configurar os acessos dessa senha e o tempo de existência, semelhante à um cartão de acesso.

Criando um Token pessoal:

  1. Vá em configurações, clicando na foto do seu perfil no canto superior direito da tela:

  1. Agora vá em Developer settings:

  1. Vá em Personal access tokens / Token (classic):

  1. Selecione generate new token (classic):

  1. Configure seu token e pronto!

Chaves de implementação:

São chaves especiais que permitem acessos a lugares específicos no GitHub (cofre digital). Além disso, você não precisará utilizar usuário, senha ou token para fazer login com esse método. Por exemplo, não é muito seguro deixar uma pessoa que é responsável pelo design (CSS) de uma página web na colaboração de um Beck End. Observação: As chaves de implementação permitem somente LEITURA do código, isso ocorre para garantir maior segurança ao projeto.


Criando um Repositório

Após fazer login, você será direcionado para a página inicial do GitHub. No canto superior esquerdo da página inicial, clique no botão "New" e preencha os dados do seu repositório.

Nome do repositório: Certifique-se de escolher um nome descritivo e único, pois o GitHub não permite nomes duplicados.

Descrição (opcional): Adicione uma descrição breve para o seu repositório.

Visibilidade: Escolha entre "Público" (acessível a todos) ou "Privado" (acessível apenas a pessoas autorizadas).

Inclua um arquivo README.md

Clique no botão "Criar repositório" quando estiver satisfeito com as configurações.

Clonando um Repositório

O comando git clone é usado para criar uma cópia local de um repositório Git existente.

Encontrar o Repositório: Primeiro, você precisa identificar o URL do repositório Git que deseja clonar.

Executar o Comando Clone: O comando git clone é usado para criar uma cópia local do repositório remoto. A sintaxe básica é a seguinte:

# Iniciar um novo repositório
git init

# OU

# Clonar um repositório existente
git clone https://github.com/seu-usuario/seu-repositorio.git

Por exemplo, para clonar um repositório chamado "meu-projeto" do GitHub, você usaria:

git clone https://github.com/seu-usuario/meu-projeto.git

Adicionar arquivos ao repositório:

Adicione os arquivos que você deseja enviar para o repositório:

# Adicionar todos os arquivos no diretório
git add .

# OU

# Adicionar um arquivo específico
git add nome-do-arquivo

Commitar as mudanças:

Comite as mudanças adicionadas, fornecendo uma mensagem descritiva:

# A mensagem do commit deve ser clara e concisa, explicando o que foi alterado.
git commit -m "Mensagem do commit aqui"

Enviar para o GitHub:

Se ainda não vinculou seu repositório local a um repositório remoto no GitHub, faça isso:

git remote add origin https://github.com/seu-usuario/seu-repositorio.git

Agora, envie as alterações para o GitHub:

git push -u origin branch-name

Substitua branch-name pelo nome da sua branch atual (geralmente é main ou master).

Testes Locais:

Além de contribuir para o desenvolvimento, você também pode usar a cópia local do repositório para realizar testes em um ambiente controlado. Isso é útil para verificar como suas mudanças afetam o projeto antes de compartilhá-las.

Commits:

Representa uma unidade de alterações feitas em um conjunto de arquivos em um repositório de código-fonte. Quando você faz um commit, está registrando uma captura instantânea (snapshot) do estado atual dos arquivos que deseja acompanhar no repositório. Os Commits são usados para rastrear e documentar o histórico de um projeto de software. Eles permitem que você acompanhe quem fez quais alterações, quando essas alterações foram feitas e qual foi o propósito por trás delas. Além disso, os commits são a base para a criação de "branches" (ramificações) e "merges" (fusões) no Git, permitindo o desenvolvimento colaborativo e o gerenciamento de versões de código de forma eficiente.

Branchs:🌳

Branches, de modo geral, são ramificações. Adentrando ao assunto, o controle de versionamento do Git é similar a uma árvore cujo o tronco é uma linha principal, que chamaremos de main, e os galhos são as branches, ou seja, as ramificações as quais o colaborador do projeto trabalhará paralelamente e de forma independente à main.

Como funciona?🕵️‍♀️

Em primeiro lugar,para entendermos melhor como as branches funcionam, precisamos antes compreender como o Git armazena seus dados.O Git não armazena com base nas mudanças ou diferenças, mas sim através de snapshots (como se fosse um “print” de algum momento).Assim, quando você faz um commit, o Git armazena um objeto de commit que contém um ponteiro para o snapshot do conteúdo que você testou.Esse objeto contém as identificações do usuário (autor, email), mensagem e ponteiros que apontam para o commit realizado ou para os commits anteriores (seus pais).

Ok, parece difícil, mas entendendo como funciona um commit normal, ficará mais fácil a compreensão. Um commit funciona assim:

  • O quadrado branco é um commit, ele armazena a “árvore”, o autor do commit e uma mensagem.
  • O quadrado azul armazena o nome dos arquivos que foram commitados e aponta para o conteúdo desses arquivos.
  • Os amarelos são os meus arquivos.

Uma forma mais detalhada de entender a situação:

\

  • Agora, mas e se eu tiver mais de 1 commit?

3 commits

  • O commit (caixa branca) apontará para o commit anterior e será salvo em snapshots (como se fosse um rolo de câmera).

  • O exemplo acima mostra a 3 commits linkados à master.
  • O “HEAD” aponta para a branch na qual você está localizado.

Então, podemos concluir que uma branch é um ponteiro móvel o qual aponta para os commits.Mais um exemplo:

  • Criaremos uma nova branch chamada “testing” com o comando:
$ git branch testing 

Usaremos o comando: $ git checkout testing para nos deslocar à branch testing (a “HEAD” estará apontando para a branch selecionada).

Perfeito! Agora que estamos na branch “testing”, vamos fazer um commit usando o comando:

$ git commit -a -m 'made a change'

  • Percebeu que a branch testing “pulou pra direita” da master? Antes elas estavam apontando para o mesmo commit “f30ab”, mas agora a branch testing está apontando para o commit “87ab2” que acabamos de fazer. Portanto, podemos visualizar que os branches podem trabalhar de forma “independente”

OBS: É importante lembrar que quando mudamos de branch com o comando “checkout”, ele retrocede o trabalho que você fez em seu branch para que você possa ir em uma direção diferente. Basicamente ele muda os arquivos locais para o momento o qual você tinha feito “checkout”.Para consertar isso, você deve alinhar o conteúdo dos arquivos locais com o conteúdo da branch.

Em um momento final, você pode verificar o histórico de diferenças e corrigi-las para depois mesclar as branches:

O uso de Git Branches apresenta várias vantagens, das quais queremos destacar duas em particular:

Permite o desenvolvimento de novos recursos para nossa aplicação sem interromper o progresso no branch principal. Com Git Branches, é possível criar diferentes ramificações de desenvolvimento que podem posteriormente ser incorporadas ao mesmo repositório, como um branch estável, um de teste e um instável, por exemplo.

Merge

O objetivo principal do merge é unir o trabalho feito em diferentes ramos, permitindo que as alterações feitas em um ramo sejam incorporadas ao histórico de outro.

Comandos Básicos:🖥️

Git init:

Inicializa um repositório Git dentro de um diretório do sistema.

git init

Git clone:

Cria uma cópia de um repositório remoto em um diretório da máquina.

git clone (https://github.com/(userGitHub)/(repositoryName).git)

Git status:

Verifica o status do git atualmente. Esse comando mostra se o projeto local está sincronizado com o master, quais arquivos estão sendo monitorados pelo Git e em qual branch você está.

git status

Git add:

Adiciona arquivos ao pacote de alterações para serem feitas. É possível adicionar um arquivo ou múltiplos arquivos por vez.

git add <-arquivo1->

Observação: Adiciona somente o arquivo 1 para o pacote.

git add .

Observação: Adiciona todos os arquivos modificados ao pacote.

Git commit:

Etapa crucial para registrar uma nova versão do projeto, composta por um conjunto de alterações. Ele pega as modificações que foram adicionadas usando o comando git add, agrupa essas mudanças em um conjunto e as identifica com um código único chamado Hashcode. Além disso, em cada commit, é necessário incluir uma mensagem descritiva que esclareça quais foram as alterações feitas nessa atualização. Isso torna mais fácil entender o propósito e o conteúdo de cada commit no histórico do projeto.

git commit -m "Adicionando cards"

Git branch:

Cria novas branches de desenvolvimento, bem como visualiza quais são os ramos existentes.

git branch

git branch feature/cards

git checkout: navegar entre as branchs do projeto.

git checkout feature/cards

Git checkout:

Altera para uma branch específica.

git checkout nome-da-branch

É usado para adicionar um repositório remoto ao seu repositório local no Git. Você fornece um nome para o repositório remoto (geralmente "origin" por convenção) e a URL do repositório remoto. Isso permite que você envie e receba alterações entre seu repositório local e o repositório remoto.

git remote add origin (url do repositorio github)

Git fetch:

É usado para baixar as atualizações de um repositório remoto para o seu repositório local no Git.

git fetch nome-do-repositorio

Git push:

Enviar as alterações do seu repositório local para um repositório remoto no Git. Isso atualiza o repositório remoto com as mudanças que você fez localmente, permitindo que outros colaboradores acessem essas alterações e as incorporem ao projeto. Geralmente, você especifica a branch local que deseja enviar e a branch correspondente no repositório remoto.

git push origin nome-da-sua-branch-local

Git pull:

Usado para atualizar o seu repositório local com as alterações do repositório remoto no Git. Ele combina automaticamente as alterações da branch remota para a branch local em que você está trabalhando, trazendo as últimas atualizações do projeto para o seu ambiente de desenvolvimento. Geralmente, é usado após um "git fetch" para trazer essas mudanças para o seu repositório local.

git pull origin main

Git merge:

É usado para combinar as alterações de uma branch para outra no Git. Geralmente, você usa "git merge" para integrar as alterações de uma branch secundária (por exemplo, uma funcionalidade ou correção de bug) na branch principal (geralmente a "master" ou "main"). Isso cria um novo commit que representa a fusão das alterações, unindo as duas linhas de desenvolvimento.

git checkout main git merge feature/nova-funcionalidade

Observação: Mesclar uma branch secundária em uma branch principal


REFERÊNCIAS:

Documentação oficial Git - https://git-scm.com/docs

\

About

Conceitos fundamentais da ferramenta de controle de versão Git e do modelo de fluxo de trabalho GitFlow.

Topics

Resources

License

Stars

Watchers

Forks