Communitygithub.com

G1Joshi/Agent-Skills

Assistência especializada em controle de versão Git, abrangendo branches, rebase interativo, cherry-pick, submódulos, worktrees e resolução de conflitos. Use ao gerenciar histórico de código-fonte e fluxos de trabalho colaborativos.

O que é Agent-Skills?

Esta skill fornece orientação especializada em Git, cobrindo desde conceitos fundamentais como a arquitetura de três árvores (Working Tree, Index, HEAD) e o grafo acíclico dirigido (DAG) até padrões modernos de uso. Ela é útil para desenvolvedores que precisam dominar branching, rebase interativo, caça automatizada a bugs com git bisect, worktrees para contextos concorrentes e otimização de repositórios grandes com Sparse Checkout e Scalar. A skill suporta qualquer ambiente que utilize Git (CLI, ferramentas de IA, IDEs) e oferece práticas recomendadas para 2025/2026, enfatizando comandos modernos como git switch e git restore, commits assinados e mensagens convencionais. Seu conteúdo é baseado na documentação oficial e em padrões consolidados da engenharia de software.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/G1Joshi/Agent-Skills/tree/HEAD/skills/tools/git

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Git

Git é a base do software moderno. Em 2025, recursos como Sparse Checkout e Scalar (para monorepos) estão se tornando convencionais.

Quando Usar

  • Branching e Colaboração: Gerenciamento de isolamento de funcionalidades, pull requests, desenvolvimento trunk-based e revisões de código em equipes distribuídas.
  • Reescrita e Limpeza de Histórico: Linearização de grafos de commits, squash de commits WIP e edição de mensagens via git rebase -i antes de mesclar em branches principais.
  • Caça Automatizada a Bugs: Isolamento de commits que introduziram regressões em milhares de revisões por meio de busca binária usando git bisect.
  • Contextos de Espaço de Trabalho Concorrentes: Trabalho em hotfixes urgentes sem a necessidade de stash ou troca de contexto de branch usando git worktree.
  • Escalonamento de Repositórios Grandes: Otimização de desempenho em monorepos massivos usando Git Sparse Checkout, Scalar e clones rasos.

Início Rápido

# Clonar repositório e criar uma nova branch de funcionalidade
git clone https://github.com/minhaorg/projeto.git
cd projeto

# Criar e mudar para nova branch usando comando moderno
git switch -c feature/fluxo-autorizacao

# Stage, commit e push com rastreamento upstream
git add .
git commit -m "feat(auth): implementar fluxo de código de autorização oauth2"
git push -u origin feature/fluxo-autorizacao

Conceitos Principais

A Arquitetura de 3 Árvores (Working Tree, Index, HEAD)

O Git gerencia arquivos em três estados distintos, em vez de simplesmente rastrear alterações entre revisões:

# 1. Working Tree: Arquivos modificados não comprometidos em seu editor
echo "export const API_URL = 'https://api.v2.internal';" >> config.ts

# 2. Index (Área de Staging): Conteúdo preparado para o próximo commit
git add config.ts

# 3. HEAD: O snapshot do último commit na branch ativa
git diff --staged  # Inspeciona diferença entre Staging e HEAD
git commit -m "chore(config): atualizar endpoint interno da API"

Grafo Acíclico Dirigido (DAG) e Objetos Imutáveis

Cada commit no Git é um nó imutável que aponta para hashes dos pais e uma árvore raiz de snapshots de blob.

# Inspecionar o objeto bruto por trás de qualquer hash de commit ou HEAD
git cat-file -p HEAD
# Saída:
# tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
# parent 8f3d1e1c3a628a58a98b47cf7d12a9e32049e712
# author Alice <[email protected]> 1727420400 +0000
# committer Alice <[email protected]> 1727420400 +0000
#
# feat(auth): implementar fluxo de código de autorização oauth2

Navegação Moderna em Branches (git switch vs git restore)

O Git moderno desambigua o comando sobrecarregado git checkout em operações dedicadas:

# Troca de Branch (substitui git checkout <branch>)
git switch main
git switch -c feature/pagamentos   # Criar e trocar

# Restauração de Arquivos (substitui git checkout -- <arquivo>)
git restore src/app.ts           # Descartar alterações não comprometidas no diretório de trabalho
git restore --staged src/app.ts  # Remover arquivo do index de volta para a working tree

Estratégias de Rebase vs Merge

  • Merge (git merge <branch>): Preserva o contexto histórico completo com um commit de merge de dois pais. Ideal para integrar branches de lançamento de longa duração.
  • Rebase (git rebase <upstream>): Reaplica commits do tópico linearmente no topo do HEAD upstream, evitando grafos emaranhados ("trilhos de trem"). Ideal para limpar branches de funcionalidade antes da revisão de PR.
# Rebase da branch de funcionalidade sobre a main mais recente de forma limpa
git switch feature/fluxo-autorizacao
git fetch origin main
git rebase origin/main

Padrões Comuns

Desenvolvimento Multi-Branch com Git Worktrees

Problema: Fazer stash de trabalho não comprometido para trocar de branches e corrigir um bug urgente em produção.

Solução: Faça checkout de múltiplas branches em diretórios separados simultaneamente:

# Criar pasta de worktree paralela para branch de hotfix
git worktree add ../hotfix-branch main

# Trabalhar no hotfix em diretório separado sem tocar no espaço de trabalho atual
cd ../hotfix-branch
git commit -am "fix: corrigir vulnerabilidade crítica de autenticação"
git push origin hotfix-branch

# Limpar worktree quando terminar
cd ../projeto
git worktree remove ../hotfix-branch

Rebase Interativo para Histórico Limpo de Pull Request

Problema: A branch de funcionalidade contém dezenas de commits bagunçados como "WIP", "corrigir typo" ou "ponto de verificação".
Solução: Faça squash e limpe o histórico interativamente antes de abrir um pull request.

# Rebase interativo dos últimos 4 commits
git rebase -i HEAD~4

# No editor interativo:
# pick 8f3d1e1 feat(auth): adicionar geração de token
# squash 4b825dc corrigir typo no payload do token
# squash a1c94e2 adicionar import ausente
# reword 91f7a02 feat(auth): adicionar endpoint de refresh token

Caça Automatizada a Regressões com Git Bisect

Problema: Um bug foi introduzido em algum lugar entre 500 commits, mas o commit exato é desconhecido.
Solução: Execute uma busca binária com script de execução de teste automatizado.

# Iniciar sessão bisect
git bisect start
git bisect bad HEAD                  # HEAD atual está quebrado
git bisect good v2.1.0               # v2.1.0 estava funcionando

# Executar script de teste automaticamente em cada etapa do bisect
git bisect run npm test -- --runInBand

# O Git termina no primeiro commit exato que quebrou a suíte de testes
git bisect reset

Melhores Práticas (2026)

Faça:

  • Use git switch e git restore: Evite o git checkout sobrecarregado para prevenir trocas acidentais de branch ou sobrescrita de arquivos.
  • Faça push com --force-with-lease: Proteja-se contra sobrescrita de commits de colegas em branches remotos.
  • Ative a Manutenção em Segundo Plano: Execute git maintenance start para otimizar packfiles, grafos de commit e desempenho de fetch.
  • Assine Commits com SSH / GPG: Garanta a autenticidade da autoria do commit em pipelines de produção.
  • Escreva Commits Convencionais: Use prefixos padronizados (feat:, fix:, chore:, refactor:) para automatizar versionamento semântico e changelogs.

Não Faça:

  • Não faça force push em branches protegidas: Nunca reescreva o histórico em main, master ou branches de lançamento compartilhadas.
  • Não cometa segredos ou credenciais: Use .gitignore e git-secrets/trufflehog; uma vez cometidos, as credenciais persistem em blobs de packfile mesmo se excluídas posteriormente.
  • Não use arquivos binários grandes diretamente: Armazene pesos de modelos grandes ou mídia em Git LFS (Large File Storage) ou S3.
  • Não mescle working trees sujas: Faça stash ou commit das alterações antes de puxar ou fazer rebase para evitar conflitos de arquivo acidentais.

Solução de Problemas

ErroCausaSolução
fatal: refusing to merge unrelated historiesPuxar de um repositório inicializado independentemente sem commit raiz compartilhado.Execute git pull origin main --allow-unrelated-histories.
HEAD detached at ...Checkout de um hash de commit específico em vez de um nome de branch.Crie uma branch a partir da posição atual: git switch -c branch-recuperacao.
Merge conflict in file.txtCommits concorrentes modificaram linhas idênticas em branches opostas.Resolva os marcadores de conflito (<<<<<<<), faça stage do arquivo (git add), e execute git commit.

Referências

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

G1Joshi/Agent-Skills

Expert Dask distributed computing assistance covering Dask DataFrames, Arrays, Futures, and cluster scaling. Use when analyzing datasets too large for pandas on a single machine or multi-node cluster.

G1Joshi/Agent-Skills

Expert dbt (data build tool) assistance covering SQL modeling, Jinja macros, tests, documentation, and semantic layer. Use when building analytics engineering pipelines on BigQuery, Snowflake, or PostgreSQL.

G1Joshi/Agent-Skills

Expert JAX assistance covering Autograd, XLA compilation (`jit`), vectorization (`vmap`), and parallelization (`pmap`). Use when building high-performance numerical computing and cutting-edge deep learning research.

G1Joshi/Agent-Skills

Expert Ray distributed computing assistance covering Ray Core (actors, tasks), Ray Train, Ray Tune, and Ray Serve. Use when scaling Python compute and ML training across multi-node clusters.

G1Joshi/Agent-Skills

Expert K9s CLI assistance covering terminal Kubernetes cluster navigation, real-time log streaming, port forwarding, and pod debugging. Use when managing and troubleshooting Kubernetes clusters with speed.

G1Joshi/Agent-Skills

Expert SWC assistance covering high-performance Rust-based JavaScript/TypeScript compilation, .swcrc configuration, Jest testing via @swc/jest, and minification. Use when replacing Babel with SWC for faster builds, accelerating test execution, or compiling modern ECMAScript features.

G1Joshi/Agent-Skills

Expert Tig assistance covering text-mode interface for Git, interactive staging, commit graph visualization, diff exploration, and blame navigation. Use when navigating Git commit history in the terminal, staging hunks interactively, browsing file changes, or reviewing revisions.

G1Joshi/Agent-Skills

Expert Vim assistance covering modal editing, .vimrc configuration, registers, macros, search/replace, and plugin management via vim-plug. Use when editing text efficiently in terminal environments, writing Vimscript, recording macros, or configuring core Vim settings.

G1Joshi/Agent-Skills

Expert Zed editor assistance covering high-performance Rust-based text editing, multi-buffer editing, language server protocols (LSP), and AI assistant integrations. Use when configuring Zed settings.json, setting up language extensions, collaborating in real-time channels, or optimizing editor startup speed.

G1Joshi/Agent-Skills

Expert Zsh assistance covering shell customization, Oh My Zsh plugins, Zinit plugin manager, prompt engineering (Starship/Powerlevel10k), and shell scripting. Use when configuring .zshrc, writing Zsh automation scripts, optimizing shell startup time, or configuring tab-completion.

G1Joshi/Agent-Skills

Expert [skill-name] assistance covering [feature 1], [feature 2], and [feature 3]. Use when [working with X], [debugging Y], or [implementing Z].

Habilidades Relacionadas