Pre-commit хук выполняется перед коммитом; можно отменить коммит при ошибке. В Go типично: go fmt, golangci-lint, go test. Реализация: .git/hooks/pre-commit скрипт или pre-commit framework. Удобно запускать go vet и тесты только для измененных пакетов. В CI дублировать проверки для гарантии.
#!/bin/sh
# .git/hooks/pre-commit
go fmt ./...
go vet ./...
go test ./...