← Package directory
Available on winget

Install Lefthook

Fast and powerful Git hooks manager for any type of projects.

Install with winget
winget install --id evilmartians.lefthook
Upgrade
winget upgrade --id evilmartians.lefthook
Uninstall
winget uninstall --id evilmartians.lefthook

About Lefthook

Fast and powerful Git hooks manager for any type of projects.

What's new in 2.1.8

Changelog - 488a5f9 fix: do not warn if local hooks path is equal to default hooks path (#1421)

Read release notes

Version history

Version Updated Notes
2.1.8 Unknown Changelog - 488a5f9 fix: do not warn if local hooks path is equal to default hooks path (#1421)
2.1.7 Unknown Changelog - f415a9d chore: go mod tidy - cf4ab9e fix: always restore unstaged changes (#1416) - 4c0e000 fix: apply stage_fixed only if it is safe (#1418) - 76aa843 fix: linter, sacrifice optimization for readability - 9d...
2.1.6 Unknown Changelog - bf73ea2 fix(packaging): do not pipe stdout and stderr (#1382) - 04da006 fix(windows): normalize lefthook path for sh script (#1383) - de9597a fix: log full scoped name for skipped jobs (#1291) - eb3e70d fix:...
2.1.5 Unknown Changelog - afac466 chore(golangci-lint): upgrade to 2.11.4 (#1362) - f8e73b9 chore: fix golangci-lint version lookup - 4564da3 chore: move golangci-lint version to .tool-versions (#1349) - 236a5bd chore: small cleanup (...
2.1.4 Unknown Changelog - 21479f9 fix: bring back {lefthook_job_name} template (#1347) - c586f14 fix: separate more commands' non-option args with -- (#1339) - 8dcd4ae pkg: fix scripts (#1348) - 2fac728 pkg: make it easier to read (#1...
2.1.3 Unknown Changelog - 044ebf3 chore(ci): switch artifact attestations gen to actions/attest v4 (#1338) - 73d1680 chore: describe ENV variables usage in CLI help output (#1337) - a9cb656 chore: small code improvements (#1336) - 947...
2.1.2 Unknown Changelog - 737a6f7 ci: freeze docmd (#1327) - 6fb8e50 feat: introduce setup hook option (#1326) - 246f1c9 fix: rollback auto-staged changes if unwanted changes detected (#1251) - af21ce3 pkg(pypi): fix python packages p...
2.1.1 Unknown Changelog - beae38f chore: reduce verbosity of hints in lefthook install (#1303) - 59c7260 ci: fix publishing to PyPi - b6cdb2e docs(install): add missing /v2 suffix for go get -tool (#1304) - 47b4867 fix: reset colors o...
2.1.0 Unknown Changelog - 6cb576e chore: fancy wording and indentation for hits - 9ace994 ci: skip Python publishing - 47b8f5c feat: allow installing non-git hooks (#1301) - ec7e8e1 feat: check core.hooksPath when lefthook install (#1...
2.0.16 Unknown Changelog - 432efde chore(golangci-lint): upgrade to 2.8.0 (#1278) - 130855b chore: timeout cleanup (#1297) - 4217025 deps: January 2026 (#1285) - 272b59b docs(remotes): elaborate on when to refetch and failure mode (#12...
2.0.15 Unknown Changelog - f8dc321 feat: skip scripts if args given with empty file template (#1277)
2.0.14 Unknown Changelog - 037fcdc deps: December 2025 (#1209) - e80f892 deps: switch from gopkg.in/yaml.v3 to go.yaml.in/yaml/v3 (#1261) - 87350d6 feat: add jsonc support (#1274) - 882159f fix: don't install custom hooks to hooks dir...
2.0.13 Unknown Changelog - 009da68 chore: add more tests (#1244) - ab93c17 docs(output): remove duplicate config: false description (#1245) - 8629088 fix: allow custom hooks in JSON schema by updating generator (#1250) - aeb326c fix: s...
2.0.12 Unknown Changelog - 303e3f7 chore: small changes on diff printing (#1242) - a4223e9 feat: ability to show diff when failing on changes (#1227) - 2b4c717 fix(git): make short status parser more robust (#1236)
2.0.11 Unknown Changelog - dcb45c0 ci: npm trusted publishing (#1234) - fd62bbb feat: more rudimentary shell completions (#1230) - f7bfafd feat: refetch and cleanup on ref change (#1210)
2.0.10 Unknown Changelog - b3791f6 feat: add no_auto_install to lefthook.yml (#1231) - 1f7303d fix: skip if empty files template (#1233)
2.0.9 Unknown Changelog - d2fa5d9 chore: remove unnecessary .svg executable permissions (#1219) - 0792c2c chore: upgrade golangci-lint to 2.7.1, add godoclint (#1223) - 0b9f193 fix: check and report Scanner errors (#1222) - 97a7399 fi...
2.0.8 Unknown Changelog - 0324368 fix: do not escape custom templates in command replacement (#1213)
2.0.7 Unknown Changelog - 88a1923 fix: prefer using lefthook from the $PATH (#1211)
2.0.6 Unknown Changelog - 4bb7586 feat: save original executable location in hooks (#1208)