- Princípio Fundamental:
pull
Antes dopush
- Ferramentas para o Dia a Dia
- Ferramentas para Qualidade e Padronização (Foco em Java)
- Fluxo de Trabalho Padrão com Branches
- Integração com IDEs (Foco em IntelliJ)
- Regras de Proteção de Branch (Server-Side)
- Anexo A: Links para Aprofundamento
- Anexo B: Solução de Problemas Comuns
A regra principal para trabalho colaborativo é sempre integrar as mudanças remotas antes de enviar as suas.
- Comando Chave:
git pull --rebase
. - Objetivo: Manter um histórico de commits limpo e linear.
- Configuração Padrão: Para que todo
git pull
userebase
, configure globalmente:git config --global pull.rebase true
- Resolução de Conflitos em Rebase: Se ocorrer um conflito, o Git pausará.
- Resolva o conflito no seu editor.
- Adicione o arquivo resolvido:
git add <arquivo-resolvido>
. - Continue o rebase:
git rebase --continue
. - Para cancelar a operação:
git rebase --abort
.
- LazyGit: Agiliza operações Git com uma interface visual no terminal.
- Instalação: Via binário pré-compilado.
- Link: Página de Releases do LazyGit
- Delta: Melhora a visualização do
git diff
com visão lado a lado.- Instalação:
sudo apt install git-delta
, depois configurar o~/.gitconfig
. - Link: Repositório Oficial do Delta
- Instalação:
- IntelliJ IDEA Git Log: A ferramenta nativa do IntelliJ é extremamente poderosa e, na prática, a melhor GUI para um fluxo de trabalho Java.
- Gitg: GUI nativa do GNOME, simples e leve. Perfeita para visualizações rápidas do histórico.
- Instalação:
sudo apt-get install gitg
- Link: Site Oficial do Gitg
- Instalação:
- Meld: Ferramenta visual de comparação e merge de arquivos e diretórios.
- Instalação:
sudo apt install meld
- Configuração com Git:
git config --global merge.tool meld
- Link: Site Oficial do Meld
- Instalação:
- pre-commit: Framework agnóstico de linguagem para gerenciar hooks de git. Ideal para rodar checagens de Maven/Gradle e outros validadores.
- Instalação:
pipx install pre-commit
(ver seção de Troubleshooting se encontrar erros). - Uso: Crie o arquivo
.pre-commit-config.yaml
e rodepre-commit install
. - Exemplo de Configuração para Java:
repos: - repo: [https://github.com/pre-commit/pre-commit-hooks](https://github.com/pre-commit/pre-commit-hooks) rev: v4.6.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-merge-conflict - id: check-xml - id: check-yaml - repo: local hooks: - id: mvn-spotless name: Maven Spotless Check entry: mvn spotless:check language: system files: \.(java|xml|pom)$
- Link: Site Oficial do pre-commit
- Instalação:
- Plugin "Conventional Commits" para IntelliJ: A forma mais prática de seguir o padrão Conventional Commits em um ambiente Java é usar um plugin diretamente na IDE.
- Instalação: Vá em
File > Settings > Plugins
, procure por "Conventional Commit" e instale. - Link: Exemplo de Plugin na Marketplace
- Instalação: Vá em
- gitleaks: Ferramenta que escaneia o repositório em busca de segredos.
- Instalação: Via binário pré-compilado da página de releases.
- Uso:
gitleaks detect -v
ou integrado aopre-commit
(como no exemplo acima). - Link: Repositório do gitleaks
- Sincronize a Base: Atualize seu branch principal (
main
oudevelop
).git checkout main git pull --rebase
- Crie o Branch: Crie seu branch de feature a partir da base atualizada.
git checkout -b feature/TASK-123-descricao-clara
- Faça os Commits: Realize seu trabalho em commits pequenos e lógicos.
git add . git commit # Use o plugin da IDE ou siga o padrão manualmente
- Atualize o Branch: Antes de enviar, sincronize novamente com o branch principal.
git pull --rebase origin main
- Envie as Mudanças: Na primeira vez, use
-u
para ligar o branch local ao remoto.git push -u origin feature/TASK-123-descricao-clara
- Integre: Abra um Pull Request (PR) no GitHub/GitLab.
- Limpeza Pós-Merge: Após o PR ser aprovado e mesclado:
git checkout main git pull git branch -d feature/TASK-123-descricao-clara
-
IntelliJ IDEA:
- Configuração Essencial: Vá em
File > Settings > Version Control > Git
e mude oUpdate Method
paraRebase
. - Recursos Nativos:
- Janela
Git Log
: Sua central de comando para visualizar o histórico e executar ações. - Janela de
Commit
(Ctrl+K
): Ative as checagens "Before Commit" para rodargoals
do Maven/Gradle (comoverify
). - Resolvedor de Conflitos: Ferramenta visual de três painéis para resolver conflitos.
- Janela
- Configuração Essencial: Vá em
-
VS Code:
- Aplicação: Configure regras de proteção no GitHub/GitLab para os branches
main
edevelop
. - Regras Mínimas:
- Exigir que os branches estejam atualizados antes do merge.
- Exigir aprovação de Pull Requests.
- Exigir que as checagens de status (Build do CI) passem antes do merge.
- Links da Documentação:
-
- Pro Git Book
[EM PORTUGUÊS]
- O livro oficial e a referência mais completa sobre Git. - Learn Git Branching
[EM PORTUGUÊS]
- Tutorial interativo e visual para aprender e praticar comandos. - Merging vs. Rebasing (Atlassian)
[EM INGLÊS]
- Artigo conceitual comparandomerge
erebase
. - Conventional Commits
[EM PORTUGUÊS]
- A especificação do padrão de mensagens de commit.
- Pro Git Book
-
- GIT REBASE: O que é e como usar (Filipe Deschamps)
[EM PORTUGUÊS]
- Tutorial em vídeo sobrerebase
.
- GIT REBASE: O que é e como usar (Filipe Deschamps)
-
Problema:
Comando 'go' não encontrado
.- Solução: Prefira instalar o binário pré-compilado da seção "Releases" do repositório no GitHub.
-
Problema:
E: O pacote 'snapd' não tem candidato para instalação
.- Solução: Instale o software via um método alternativo, como um pacote
.deb
ou AppImage.
- Solução: Instale o software via um método alternativo, como um pacote
-
Problema:
error: externally-managed-environment
ao usarpip install
.- Solução: Use
pipx
(sudo apt install pipx
) para instalar pacotes Python em ambientes isolados.
- Solução: Use
-
Problema: Erro
context canceled
ou100% packet loss
na rede.- Diagnóstico: Problema com a rota de rede via IPv6.
- Solução: Force o uso de IPv4. Confirme com
ping -4 google.com
. Para desabilitar o IPv6 permanentemente, edite/etc/sysctl.conf
.
-
Problema: Erro
NO_PUBKEY
e repositório "não assinado" noapt update
.- Solução: Adicione a chave GPG do repositório e rode
sudo apt-get update
novamente.
- Solução: Adicione a chave GPG do repositório e rode
-
Problema: Falhas de compilação de software (erros de
cmake
oumake
).- Diagnóstico: Dependências de desenvolvimento (
-dev
) faltando ou incompatíveis com a versão do sistema operacional. - Solução: A solução mais pragmática é buscar um método de instalação alternativo e mais resiliente, como Flatpak ou usar a ferramenta integrada à sua IDE.
- Diagnóstico: Dependências de desenvolvimento (