A Git subcommand for managing named changelists — organise files by purpose before staging.
git-cl
is a command-line tool that offers Git changelist support, inspired by Subversion. It allows users to assign working directory files to named changelists, helping organise work by intent, manage partial commits, and create branches directly from a changelist.
Perfect for developers who prefer to organise their work logically from the start, rather than managing complex commit history afterward.
- Group files logically before staging using Git changelists
- Work on multiple features on a single branch
- Stage and commit changes by intent
- Stash changelists and resume work later
- Create a new branch directly from a changelist
- Local-only metadata (
.git/cl.json
) - Simple CLI:
git cl <command>
# Install
mkdir -p ~/bin
wget https://raw.githubusercontent.com/BHFock/git-cl/main/git-cl -O ~/bin/git-cl
chmod +x ~/bin/git-cl
# Verify Installation
git cl --version
git cl help
# Use changelists inside a Git repository
git cl add fixup file1.py
git cl status
git cl commit fixup -m "Fix file1"
Make sure ~/bin
is listed in your $PATH
.
# Add files to a changelist
git cl add docs-fix README.md docs/index.md
# See changes grouped by changelist
git cl status
# Stage or commit changelists
git cl stage docs-fix
git cl commit docs-fix -m "Update documentation layout and intro"
# Keep the changelist after committing
git cl commit docs-fix -m "Fix bug" --keep
# Remove a file from its changelist
git cl remove README.md
# Delete a changelist
git cl delete docs-fix
# Temporarily stash a changelist and resume work on a new branch
git cl stash docs-fix
git checkout -b docs-fix-work
git cl unstash docs-fix
# Create and switch to a new branch from a changelist (auto-stash/unstash)
git cl br docs-fix
📘 Read the full git-cl tutorial.
📘 Read the design notes.
📘 Read why git-cl exists.
- Requires Python 3.9+, Git, and a Unix-like OS
- Designed for single-user workflows, concurrent operations may conflict
- Always inspect downloaded scripts before executing. See git-cl for source.
git-cl
is now feature complete. All planned functionality has been implemented, including changelist creation, staging, committing, stashing, and branching. Future updates will focus on code refactoring, bug fixes, and usability improvements — no major new features are planned.
See CONTRIBUTING for guidelines on bug reports and documentation improvements.
Use, fork, or adapt freely under the BSD license.
BSD 3-Clause License — see LICENSE for details.