Executando verificação de segurança...
18

3 cenários que acontecem no Git somente em ambientes corporativo! 📒

O Git & GitHub são ferramentas essenciais para qualquer papel na carreira de desenvolvimento de software. Seja você desenvolvedor mobile, front-end, back-end ou em outra área, entender como utilizá-las é fundamental. Aqui, vou compartilhar o que utilizo e aprendi no dia a dia como desenvolvedor no LuizaLabs. Garanto que, com este guia, você, como júnior ou estagiário, vai dar um passo à frente no mercado.

Este artigo cobre três cenários principais que já enfrentei como desenvolvedor e gostaria de ter aprendido antes:

  1. Atualizar sua branch com histórico linear de commits (sem precisar fazer merge)
  2. Acessar uma branch criada por outro desenvolvedor
  3. Fazer Squash Commits para organizar commits antes do merge

Atualizar Branch (com histório linear)

Imagine que você está trabalhando e precisa da branch de outro desenvolvedor para configurar seu ambiente local. Você acessa a branch, encontra um bug e o reporta. Algum tempo depois, o desenvolvedor diz: "Atualiza sua branch, corrigi o problema". Como você faz isso? É bem simples:

git pull origin <nome-da-branch>

O que este comando faz?

  • O comando git pull serve para "trazer" as alterações do repositório remoto para o seu repositório local.

  • O argumento origin é o repositório remoto (geralmente é o padrão).

  • <nome-da-branch> é o nome da branch que você quer atualizar.

Como Manter um Histórico Linear de Commits?

Usar o comando acima pode criar commits de merge, poluindo o histórico. Para evitar isso, use o argumento --rebase, ficando assim:

git pull origin <nome-da-branch> --rebase

Por quê o --rebase?

O git pull é uma abstração que combina dois comandos:

  1. git fetch: Atualiza as alterações do repositório remoto para o local.

  2. git merge <nome-da-branch>: Faz o merge das alterações na branch atual.

O --rebase substitui o git merge <nome-da-branch> por git rebase origin/<nome-da-branch>, reaplicando seus commits locais no topo das alterações mais recentes da branch remota. Isso evita a criação de commits extras de merge.

Acessar Branch de Outro Desenvolvedor

Imagine que um colega pede para você testar funcionalidades em uma branch que ele criou. Como você faz isso? Siga os passos abaixo:

  1. Certifique-se de estar na branch principal (main/master):

    git checkout main
    
  2. Atualize as referências remotas:

    git fetch
    
  3. Liste as branches remotas:

    git branch -r
    

    Procure a branch do seu colega, por exemplo: origin/feat-add-new-button.

  4. Crie uma branch local baseada na remota:

    git checkout -b <nome-da-branch-local> origin/<nome-da-branch-remota>
    

    Exemplo:

    git checkout -b feat-add-new-button origin/feat-add-new-button
    
  5. Atualize a branch com as últimas alterações:

    git pull origin <nome-da-branch-local> --rebase
    

Squash Commits

Antes de mergear sua branch com a principal (main/master), seu time pode solicitar que você organize seus commits usando Squash Commits.

O que é isso? Squash Commits é o processo de combinar vários commits em um único. Isso deixa o histórico do repositório mais limpo e organizado.

Quando usar Squash Commits?

  • Quando você fez muitos commits pequenos, como:

    • "Corrigi bug no botão"

    • "Ajustei alinhamento do botão"

    • "Adicionei funcionalidade ao botão"

  • Esses commits podem ser combinados em algo mais claro, como:

    • "Adicionado botão funcional"

Como fazer Squash Commits?

  1. Inicie o rebase interativo:

    git rebase -i HEAD~n
    

    Substitua n pelo número de commits que você quer combinar. Por exemplo caso seja os últimos 3 commits que você quer mesclar, ficaria: git rebase -i HEAD~3. Use git log para ver seus últimos commits.

    ⚠️ Atenção, nunca faça rebase em commits que não sejam seus. Pode causar problemas de integridade no histórico compartilhado do Git e dificultar o trabalho em equipe

  2. No editor, altere os commits que você deseja combinar de pick para f.

    Exemplo:

    pick 1234567 Adicionei botão
    f 89abcde Corrigi bug no botão
    f 6543210 Ajustei alinhamento do botão
    
  3. Edite a mensagem final do commit e salve.

  4. Finalize o rebase:

    git push --force
    

CUIDADO! Sempre que utilizar o argumento --force, você pode sobrescrever commits de outros desenvolvedores que estão trabalhando na mesma branch que você!

No fim os commits da hash 89abcde, 6543210 e 1234567 irão ser mesclados. Sempre deixe o pick do último commit do topo para não haver problemas.

⚠️ Sempre combine apenas commits relacionados à mesma tarefa. Isso evita confusão no histórico do Git.

Carregando publicação patrocinada...
3

Carlos, parabéns pelo texto.

Como complemento, sugiro aos colegas o uso do git push --force-with-lease que é a versão segura do git push --force.

Ele é mais seguro pois primeiro verifica se o branch remoto está exatamente como você espera que esteja (ou seja, se ninguém mais fez push de alterações desde sua última atualização). Se alguém tiver feito alterações que você não tem localmente, o comando falha em vez de sobrescrever essas mudanças.

1
2
3

Boas dicas, atualmente o comando switch é mais usado para trabalhar com Branchs, para trocar de Branch use: git switch "nome da branch" e para criar uma nova Branch use: git switch -c "nome da branch".

1

Boa! O git switch é uma forma introduzida em uma das versões mais novas do Git. Eu venho da época que ainda a branch principal chamava-se master e não main ainda, então tenho muitos hábitos daquela época rs

2

Faz tempo que eu estava querendo ver um conteúdo de Git e o seu foi muito rico! Obrigado pelo Post!! Vou praticar esses comandos em uma branch para ver como se comporta. Senti falta de alguns prints da linha de comando. :D

2