A lightweight branching workflow tool for Git that helps teams keep repositories tidy and predictable. Create short‑lived branches, finish them cleanly, and tag releases with a simple set of commands.
Untangle your workflow.
- Simple start and finish commands for feature, bugfix, support, and release branches
- Clean merge back to the default branch with optional rebase before merge
- Optional annotated release tagging on finish for release branches
- Configurable branch prefixes, tag prefix, merge style, and auto‑push behavior
- Works locally with or without a remote and respects your existing Git setup
- No PR requirement baked in; teams can still use PRs outside the tool if they prefer
Global package managers will be added. For now you can run it directly from the repo.
git clone https://github.com/taygunsavas/git-tangle
cd git-tangle
chmod +x bin/git-tangle libexec/tangle/*.sh
export PATH="$PWD/bin:$PATH"To install system‑wide on macOS or Linux:
# Apple Silicon default prefix
sudo PREFIX=/opt/homebrew ./scripts/install.sh
# Common Linux or Intel macOS prefix
# sudo PREFIX=/usr/local ./scripts/install.shInside any Git repository:
git tangle init
git tangle feature start login
# do work, commit
git tangle feature finish loginRelease example:
git tangle release start 1.0.0
# final fixes
git tangle release finish 1.0.0git tangle init
git tangle config get <key>
git tangle config set <key> <value>
git tangle feature start <name> [--from <branch>]
git tangle feature finish <name>
git tangle bugfix start <name> [--from <branch>]
git tangle bugfix finish <name>
git tangle support start <name> [--from <branch>]
git tangle support finish <name>
git tangle release start <version> [--from <branch>]
git tangle release finish <version>
Repository‑local Git config keys used by Git Tangle:
tangle.defaultBranchdefault branch name, auto‑detected if emptytangle.tagPrefixtag prefix forrelease finish(default empty)tangle.mergeStyleno-fforff(defaultno-ff)tangle.autoPushtrueorfalse(defaulttrue)tangle.rebaseOnFinishtrueorfalse(defaultfalse)tangle.prefix.feature(defaultfeature)tangle.prefix.bugfix(defaultbugfix)tangle.prefix.support(defaultsupport)tangle.prefix.release(defaultrelease)
You can set values with:
git tangle config set tangle.autoPush false
git tangle config set tangle.mergeStyle ff
git tangle config set tangle.tagPrefix "" # keep empty, or e.g. 'v'- Git Tangle is a workflow helper that sits on top of Git
- It does not replace Git commands and it does not change Git’s data model
- Release tagging behavior is configurable and can be enabled or disabled per repository
- Homebrew and Winget packages
- Optional finish with PR creation for hosted platforms
- Changelog generation for releases
- CI templates for common providers
This project is licensed under the MIT License.
See the LICENSE file for details.