Your Git workflow, in motion.
Git Tide is a command-line tool that sits on top of Git. Update branches, review Pull Requests and guard your repository with local hooks, without leaving the Git you already use.
Version 1.0.0. For macOS, Linux and Windows. Needs Git 2.30+.
$ tide update
→ Fetching origin/stage
→ Updating local stage
→ Integrating stage into feature/login (merge)
✓ Updated to include stage
Less repetition. More flow.
Everyday Git work is a string of small, repetitive steps: refreshing a base branch, bringing it into your branch, checking out a Pull Request, remembering the commit format, keeping secrets out of history. Git Tide turns these routines into consistent commands and local checks, with Git still at the centre.
- One command for the routines you repeat daily.
- Rules your whole team shares, kept in the repository.
- Mistakes caught before they leave your machine.
A layer above Git. Not a replacement.
- You run a
tidecommand. - It reads
.tide.ymlfrom the repository root. - It checks the repository is safe: no detached HEAD, no uncommitted tracked changes, no merge in progress.
- It runs the Git you already have, one step at a time.
- It prints each step, and stops with a hint when something needs you.
No server, no database, no telemetry. Only branch (with --remote or --github), create, update, push, review and pr touch the network, and each says so as it runs.
tide CLI
- Configuration (.tide.yml)
- Safety checks
- Git hooks
What Git Tide does
Everything below is in version 1.0.0.
-
Update a branch
Bring the base branch into your current branch with merge or rebase. It stops before touching uncommitted work and never stashes or resets.
tide updateAvailable -
Review a Pull Request
Check out a GitHub Pull Request on a predictable local branch. Forks work too.
tide review 123Available -
Create a branch
Start a new branch from a freshly fetched base, with no upstream until you push.
tide create feature/loginAvailable -
Push safely
Push the current branch and set its upstream. Protected branches are refused, and a forced push asks first and never overwrites commits you have not fetched.
tide pushAvailable -
See your branches
List branches with their base, upstream, staleness and protection, and optionally the open Pull Requests.
tide branchAvailable -
Switch safely
Switch with partial names or - for the previous branch, without losing uncommitted work.
tide change two-faAvailable -
Commit with checks
Stage and commit in one step. Tide checks the branch, the message and the staged lines first, and undoes the staging if a check fails.
tide save -m "feat: ..."Available -
Finish or abort
After a conflict, finish the merge or rebase, or give up, without remembering which operation it was.
tide continueAvailable -
Open a Pull Request
Push the current branch and open a Pull Request, after showing a summary and asking you to confirm.
tide prAvailable -
Conventional Commits
A commit-msg hook rejects messages that aren’t Conventional Commits and shows a valid example.
commit-msg hookAvailable -
Secrets and conflict markers
A pre-commit hook scans only the lines you add for likely secrets and leftover conflict markers. Findings show file, line and rule, never the value.
pre-commit hookAvailable -
Protected branches
Hooks block direct commits and pushes to protected branches, in any Git client, IDEs included.
pre-commit, pre-pushAvailable -
Diagnostics
Check Git, configuration, remote, base branch and each hook, without changing anything.
tide doctorAvailable
One command. A clearer workflow.
$ git switch stage
$ git pull --ff-only origin stage
$ git switch feature/login
$ git merge stage
The base branch comes from .tide.yml. Tide also fast-forwards local stage and refuses if uncommitted work is at risk. Conflicts are left in Git’s normal state for you to resolve.
Git Tide in action
Built around the way developers work.
- Git remains the source of truth. Tide runs the Git you already have, and plain git commands keep working.
- Project rules live in the repository. Commit .tide.yml so the whole team shares them.
- Automation is transparent. Every step is printed as it runs.
- Safe by default. It never stashes, resets or cleans for you, and force-push asks first.
- Nothing hidden. No telemetry, and tokens and secret values never reach the output.
Download Git Tide
Version 1.0.0. One self-contained program: you do not need Go.
- macOS, Apple Silicontide_v1.0.0_darwin_arm64.tar.gz
- macOS, Inteltide_v1.0.0_darwin_amd64.tar.gz
- Linux, x86-64tide_v1.0.0_linux_amd64.tar.gz
- Linux, ARM64tide_v1.0.0_linux_arm64.tar.gz
- Windows, x86-64tide_v1.0.0_windows_amd64.zip
- Windows, ARM64tide_v1.0.0_windows_arm64.zip
Or install from the terminal on macOS and Linux. It checks the download against the checksums first:
repo=https://github.com/Cellestias/git-tide
version=$(curl -fsSLI -o /dev/null -w '%{url_effective}' "$repo/releases/latest" | sed 's#.*/##')
os=$(uname -s | tr '[:upper:]' '[:lower:]')
case $(uname -m) in x86_64 | amd64) arch=amd64 ;; arm64 | aarch64) arch=arm64 ;; *) echo "unsupported CPU: $(uname -m)" >&2 ;; esac
name=tide_${version}_${os}_${arch}
curl -fsSLO "$repo/releases/download/$version/$name.tar.gz"
curl -fsSLO "$repo/releases/download/$version/checksums.txt"
grep " $name.tar.gz\$" checksums.txt | { sha256sum -c - 2>/dev/null || shasum -a 256 -c -; }
tar -xzf "$name.tar.gz"
sudo install -m 755 "$name/tide" /usr/local/bin/tide
tide --version
Needs Git 2.30+. On Windows, install Git for Windows, because the hooks are shell scripts. Windows support is best-effort: the full test suite runs on Linux and macOS.
Prefer to build it? Clone the repository and run make install (needs Go 1.26.10+).
FAQ
Does Git Tide replace Git?
No. Tide runs the Git you already have and needs no server or database. Plain git commands keep working alongside it.
Is it tied to a language or framework?
No. Tide works on Git repositories, not on your code.
Do I need GitHub?
Not for create, update, push, init, doctor or the hooks, which only need Git. review, pr and branch --github use the GitHub API, and review and pr support github.com remotes. Public repositories work without a token; pr needs one, from GITHUB_TOKEN, GH_TOKEN or a .env file at the repository root.
Can it prevent every secret from being committed?
No. Detectors cover AWS access key IDs, GitHub, Slack, Stripe live and Google API keys, and private key headers, plus your own patterns. It is best-effort: if a secret reaches a commit, rotate it.
Does local branch protection replace GitHub branch protection?
No. Anyone can bypass hooks with --no-verify. Keep branch protection enabled on GitHub; it is the authoritative control.
What happens to my existing Git hooks?
They are preserved. tide init renames an existing hook to <hook>.pre-tide, and it still runs after Tide’s checks pass.
Does it run on Windows?
Yes, on a best-effort basis. Programs for Windows x86-64 and ARM64 are published and started on every release. The full test suite runs on Linux and macOS only, and the hooks are shell scripts that Git for Windows runs with its bundled shell. Report problems on Issues.
Is Git Tide available now?
Yes. Version 1.0.0 is published with ready-to-run programs for macOS, Linux and Windows, and you can still build it from source.