Skip to content
/ git-cl Public

git-cl is a Git subcommand for managing named changelists (like in SVN). Group files into changelists before staging or committing – keep parallel work organised and avoid accidental commits.

License

Notifications You must be signed in to change notification settings

BHFock/git-cl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

git-cl

A Git subcommand for managing named changelists — organise files by purpose before staging.

Git Changelist Tutorial

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.

Why git-cl?

  • 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>

Quick Start

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

Common Commands

# 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

Example Output

git-cl status changelist screenshot in terminal

Documentation

📘 Read the full git-cl tutorial.

📘 Read the design notes.

📘 Read why git-cl exists.

Notes

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

Project status

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.

License

BSD 3-Clause License — see LICENSE for details.

About

git-cl is a Git subcommand for managing named changelists (like in SVN). Group files into changelists before staging or committing – keep parallel work organised and avoid accidental commits.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Languages