Your Git workflow, in motion.

GiTide 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.2.0. For macOS, Linux and Windows. Needs Git 2.30+.

$ gtide update
→ Fetching origin/stage
→ Updating local stage
→ Integrating stage into feature/login (merge)
✓ Updated to include stage
Sample session. Output format comes from the CLI; names are examples.

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. GiTide 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.

  1. You run a gtide command.
  2. It reads .tide.yml from the repository root.
  3. It checks the repository is safe: no detached HEAD, no uncommitted tracked changes, no merge in progress.
  4. It runs the Git you already have, one step at a time.
  5. 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.

What GiTide does

Everything below is in version 1.2.0.

One command. A clearer workflow.

$ git switch stage
$ git pull --ff-only origin stage
$ git switch feature/login
$ git merge stage
main stage feature/login
stage gains a commit; feature/login merges it.

The base branch comes from .tide.yml. GiTide 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.

GiTide in action

Built around the way developers work.

Download GiTide

Version 1.2.0. One self-contained program: you do not need Go.

Fastest way: one command. It downloads the latest release, checks it against the checksums, and installs gtide and the tide alias. macOS and Linux:

curl -fsSL https://github.com/Cellestias/git-tide/releases/latest/download/install.sh | sh

Windows (PowerShell):

irm https://github.com/Cellestias/git-tide/releases/latest/download/install.ps1 | iex

The command is gtide, because another well-known tool already uses the name tide. The installer also adds tide as a short alias and never overwrites a different program with that name.

Prefer to download a file yourself?

Checksums (SHA-256)

Downloaded with a browser? macOS may block the unsigned program as coming from an unidentified developer: run xattr -d com.apple.quarantine gtide once. Windows SmartScreen may ask for confirmation: choose More info, then Run anyway. The one-line installers above avoid both.

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 GiTide replace Git?

No. GiTide 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. GiTide 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. gtide init renames an existing hook to <hook>.pre-tide, and it still runs after GiTide’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 GiTide available now?

Yes. Version 1.2.0 is published with ready-to-run programs for macOS, Linux and Windows, one-line installers, and you can still build it from source.

Why is the command gtide and not tide?

Another well-known project already ships a command called tide, so gtide is the primary name. Releases and the installer also include a tide copy as an optional short alias; use it only if nothing else on your machine has that name. Everything works the same with either, and the Git hooks call gtide.

I use version 1.0.0. What changes when I upgrade?

The command is now gtide, and release files are named gtide_<version>_<os>_<arch>. Install the new version, then run gtide init in each repository: gtide doctor reports hooks that still call tide as outdated, and init refreshes them. .tide.yml keeps its name and needs no change.

How does GiTide authenticate to GitHub?

review, pr and branch --github read GITHUB_TOKEN (or GH_TOKEN) from the environment, or from an untracked .env file at the repository root. The token is never stored, and a .env tracked by Git is ignored on purpose. Public repositories work for review without a token.