Configuración de Git
Alias, hooks y valores predeterminados sensatos de Git para equipos de Python que usan uv, ruff y pytest localmente y en CI.
Busca en todas las páginas de la documentación
Alias, hooks y valores predeterminados sensatos de Git para equipos de Python que usan uv, ruff y pytest localmente y en 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"Cuándo usar esto:
# ~/.gitconfig (extracto)
[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 (repositorio)
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: falseLo que esto demuestra:
defaultBranch = main para nuevos repositorios.git/hooks/ o gestionados por el framework pre-commit..gitattributes para nbstripout, LFS, generado por linguist.gpg.format ssh) en Git moderno.| Configuración | Valor | Por qué |
|---|---|---|
pull.rebase | true | Integración lineal de características |
fetch.prune | true | Eliminar ramas remotas obsoletas |
rebase.autoStash | true | Rebase con árbol sucio (con cuidado) |
core.autocrlf | input en mac/linux | Evitar ruido CRLF en Python |
init.defaultBranch | main | Nombre de rama principal consistente |
# Identidad local del repositorio para el portátil de trabajo
git config user.email "ada@acme.com"
# Asegurar que se ejecutan los hooks
uv run pre-commit install
uv run pre-commit run --all-filesgit stash list.git config user.email por repositorio para contratistas.--no-verify - Evita ruff en un commit de emergencia. Solución: permitir solo en caso de emergencia; arreglar antes de fusionar..gitattributes * text=auto eol=lf.git commit -S -m "test" en una rama primero.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Husky (Equipos Node) | Monorepo con JS + Python | Python puro - pre-commit es un ajuste nativo |
| Puertas solo de CI | Hooks bloqueados políticamente | Desarrolladores que envían ruff fallido a menudo |
git config --global includeIf | Repositorios de trabajo vs. personales en un portátil | Máquina de un solo empleador |
| Lista de verificación manual | Equipo pequeño | Escalar más allá de ~5 desarrolladores |
Repositorio .pre-commit-config.yaml confirmado - todos comparten hooks; pre-commit install por clon.
git config gpg.format ssh y user.signingkey a la ruta de la clave pública - GitHub verifica las firmas SSH.
gh pr view --web o alias pr = "!gh pr view --web" después de hacer push.
Osxkeychain almacena tokens HTTPS; preferir SSH para operaciones de git.
Enlace desde Lista de Verificación de Configuración del Entorno con bloque de copiar y pegar.
~/.gitignore_global para .DS_Store, archivos IDE - complementa .gitignore del repositorio.
.git-blame-ignore-revs para commits de formato masivo - arqueología más limpia.
Raro en servicios Python - si se usa, submodule.recurse para comportamiento de clonación/pull.
feature.manyFiles true y clonación parcial git clone --filter=blob:none para monorepos enormes.
git config pull.rebase false override local al fusionar ramas de release frecuentemente.
Versiones de Stack: Esta página fue escrita para Python 3.14.0 (estable 3.14, mantenimiento 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+, y uv 0.6+.
Revisado por Chris St. John·Última actualización: 16 jul 2026