Configuração do Git
Aliases, hooks e padrões sensatos do Git para equipes Python que usam uv, ruff e pytest localmente e em CI.
Busque em todas as páginas da documentação
Aliases, hooks e padrões sensatos do Git para equipes Python que usam uv, ruff e pytest localmente e em CI.
git config --global user.name "Ada Lovelace"
git config --global user.email "ada@acme.com"
git config --global pull.rebase true
git config --global fetch.prune true
git config --global alias.lg "log --oneline --graph -20"Quando usar isso:
# ~/.gitconfig (excerto)
[user]
name = Ada Lovelace
email = ada@acme.com
[pull]
rebase = true
[fetch]
prune = true
[init]
defaultBranch = main
[alias]
st = status -sb
sync = "!git fetch origin && git rebase origin/main"
cleanup = "!git branch --merged main | grep -v main | xargs git branch -d"# .pre-commit-config.yaml (repositório)
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.0
hooks:
- id: ruff
- id: ruff-format
- repo: local
hooks:
- id: pytest-quick
name: pytest quick
entry: uv run pytest -q tests/unit
language: system
pass_filenames: falseO que isso demonstra:
defaultBranch = main para novos repositórios.git/hooks/ ou gerenciados pelo framework pre-commit..gitattributes para nbstripout, LFS, gerado pelo linguist.gpg.format ssh) no Git moderno.| Configuração | Valor | Por quê |
|---|---|---|
pull.rebase | true | Integração linear de funcionalidades |
fetch.prune | true | Remove branches remotos desatualizados |
rebase.autoStash | true | Rebase com árvore suja (cuidado) |
core.autocrlf | input em mac/linux | Evita ruído CRLF em Python |
init.defaultBranch | main | Nome consistente do branch principal |
# Identidade local do repositório para laptop de trabalho
git config user.email "ada@acme.com"
# Garante que os hooks sejam executados
uv run pre-commit install
uv run pre-commit run --all-filesgit stash list.git config user.email por repositório para contratados.--no-verify - Ignora ruff em commit de emergência. Correção: permitir apenas em caso de quebra; corrigir antes de mesclar..gitattributes * text=auto eol=lf.git commit -S -m "test" em um branch primeiro.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Husky (Equipes Node) | Monorepo com JS + Python | Python puro - pre-commit é um ajuste nativo |
| Portões apenas de CI | Hooks politicamente bloqueados | Desenvolvedores enviam ruff falhando com frequência |
git config --global includeIf | Trabalho vs. repositórios pessoais em um laptop | Máquina de um único empregador |
| Lista de verificação manual | Equipe pequena | Escalar além de ~5 desenvolvedores |
Repositório .pre-commit-config.yaml commitado - todos compartilham hooks; pre-commit install por clone.
git config gpg.format ssh e user.signingkey para o caminho da chave pública - GitHub verifica assinaturas SSH.
gh pr view --web ou alias pr = "!gh pr view --web" após o push.
Osxkeychain armazena tokens HTTPS; prefira SSH para operações git.
Link da Lista de Verificação de Configuração de Ambiente com bloco de copiar e colar.
~/.gitignore_global para .DS_Store, arquivos IDE - complementa .gitignore do repositório.
.git-blame-ignore-revs para commits de formatação em massa - arqueologia mais limpa.
Raro em serviços Python - se usado, submodule.recurse para comportamento de clone/pull.
feature.manyFiles true e clone parcial git clone --filter=blob:none para monorepos enormes.
git config pull.rebase false override local ao mesclar branches de release com frequência.
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026