Recommended Free Tools
Git Hooks Ext turns Git’s low-level reference-transaction updates into named callbacks such as branch-created, branch-deleted, and head-switched. Git itself reports changed reference names and object IDs, not those higher-level meanings. The extension interprets the updates and, by default, dispatches events after the transaction commits.
What Git’s reference-transaction hook provides
Git’s official githooks manual says the hook is invoked by any Git command that performs reference updates. Git calls it with one argument identifying the transaction state: preparing, prepared, committed, or aborted. Standard input contains one record per update, in the form <old-value> <new-value> <ref-name>. The full reference name is included, and a transaction may invoke the hook at more than one state.
As an Amazon Associate I earn from qualifying purchases.
This is useful raw data, but it does not say “a branch was created” or “a tag was deleted.” A consumer has to interpret the old and new values and the reference name. Git Hooks Ext, documented at the project site, supplies that interpretation as named events that can be connected to scripts.
Which semantic events can it emit?
The extension documents events for local and remote branches, HEAD, tags, notes, stash, and generic references. Examples include:
#1 Best Overall
branch-created,branch-updated, andbranch-deletedtag-deletedand other tag events- HEAD attachment, detachment, and switching events, including
head-switched - Rename candidates, remote-branch events, notes, stash, and generic ref events
Event names can be configured in Git configuration, exposed through classic hook filenames, or inspected in dry-run output. Use ghe events to see the available events, and consult the project documentation for the current names and configuration options.
When callbacks run, and how prior values are recovered
By default, Git Hooks Ext dispatches user events only for the committed state. That timing helps avoid running a user callback for a reference transaction that later aborts. During prepared, the extension can save a snapshot of previous values in private state under the Git path. It isolates snapshots by process and transaction payload, consumes them before dispatch, and discards them on aborted.
Rank #2
Some hook payloads may contain zero values where a useful prior value is needed for interpretation. The snapshot provides a way to recover those old values. The project documents a fallback: if snapshot recovery fails, it uses the supplied payload rather than rejecting the reference transaction.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsInstall and register a callback
The project’s quick start is to install the bridge, create an executable script, and register it for the event you want with ghe add. A typical setup flow is:
- Install Git Hooks Ext using a method listed on the project’s current installation page. Documented distribution options include Homebrew, Debian packages for AMD64 and ARM64, a multi-platform container image, and other packages; availability and commands can change.
- Create a script for the desired event and make it executable. The script should perform the action you want when that event is dispatched.
- Register the script with
ghe addfor the chosen event. Useghe eventsto check event names and the project documentation for the exact command syntax. - Run
ghe doctorto inspect the setup, and use the project’s list, show, and remove operations to review or manage registrations.
Check your repository’s core.hooksPath configuration as part of setup. A custom hooks directory affects where Git looks for hooks, so confirm that the extension’s hook is configured where your Git installation will invoke it.
Git version requirements and hook configuration
The project documents Git 2.28 or later as the minimum for the reference-transaction hook. Its compatibility workflow covers Git 2.27–2.55, but that test range does not make every version compatible with this hook or guarantee identical features across releases.
Git Hooks Ext says its installation detects the Git version: with Git 2.54 or later it uses config-based hooks; with Git 2.53 or older it uses a legacy reference-transaction hook and prints migration instructions. Treat these details as release-sensitive and confirm the current project guidance before installing or changing hook configuration.
Free tools Windows power users keep installed
One-click scans. No signup required.
Important limits: rename inference and worktree events
Rename events are inferred, not guaranteed
The underlying hook reports reference changes, not the user’s intent. A deletion and a creation pointing to the same object can look like a rename. The extension limits rename inference to unique matches within the same namespace, but this remains best-effort. The project also reports that tested Git versions do not provide both sides of git branch -m through the underlying hook. Do not rely on a rename callback as definitive proof that a user performed a rename.
Best Value
Worktree lifecycle events require the wrapper
Worktree lifecycle events are separate from reference-transaction interpretation. Git Hooks Ext provides them only when worktree operations go through its ghe worktree wrapper. Running ordinary git worktree commands directly bypasses the wrapper and does not emit those extension lifecycle events.
Is Git Hooks Ext the right layer?
| Need | Built-in Git hook | Git Hooks Ext |
|---|---|---|
| Reference transaction data | Raw old and new values, full ref name, and transaction state. | Interprets reference updates and dispatches named events. |
| Semantic operation names | Does not directly label updates as branch creation, deletion, or rename. | Provides named event categories, including branch and tag events. |
| Rename certainty | Reports reference changes, not user intent. | Infers rename candidates on a best-effort basis; not proof of intent. |
| Worktree lifecycle callbacks | Not established here as part of the reference-transaction interface. | Available through the ghe worktree wrapper, not ordinary direct git worktree commands. |
| Callback timing | Provides transaction states to the hook. | Defaults to user-event dispatch after commit. |
Use Git’s built-in hook directly if your automation needs raw reference updates and you want to define interpretation yourself. Git Hooks Ext is the more convenient layer when named events fit your workflow and its best-effort inference is acceptable. If you need worktree lifecycle notifications, plan to use the wrapper for those operations.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →




