Git Branch Stacking Utility
Project description
Panqake: Stack Git Branches Without the Headache
Panqake is a CLI tool that makes managing dependent pull requests significantly easier by automating the entire git-stacking workflow. Stop dealing with painful rebases and focus on your code instead.
What Problems Panqake Solves
- Reviews no longer block progress on dependent work
- Simplify complex workflows with a single command for common operations
- Eliminate manual rebasing when working with dependent branches
- Automate PR management for each branch in your stack
Quick Installation
uv tool install panqake
Optional dependency:
- gh: GitHub CLI (needed only for PR creation/management)
Most-Used Commands
| Command | Purpose | What It Does |
|---|---|---|
pq new feature-name |
Create branches | Creates a new branch based on your current branch |
pq modify |
Commit changes | Interactively select files to stage and commit/amend |
pq update |
Propagate changes | Rebases all child branches and updates their PRs |
pq submit |
Submit changes | Updates the PR with current branch changes |
pq sync |
Sync branches | Fetches latest changes from the remote main branch, updates local child branches, and optionally deletes merged branches |
pq merge |
Complete workflow | Merges PR and updates all dependent branches |
pq list or pq ls |
View branch structure | Lists all branches in the stack with their relationships |
pq switch or pq co |
Navigate branches | Switches to another branch in the stack |
pq up |
Navigate to parent | Moves up from current branch to its parent |
pq down |
Navigate to child | Moves down from current branch to a child branch |
Real-World Workflow Example
Here's how to build a stack of dependent features:
# Start from main
git checkout main
# Create your base feature branch
pq new auth-backend
# Make changes, commit them
pq modify -m "Implement JWT authentication"
# Create a dependent branch for frontend work
pq new auth-frontend
# Make changes, commit them
git add .
pq modify -m "Add login form UI"
# Oops! Need to fix something in the backend branch
pq switch auth-backend
# Make your backend fixes
# Commit the fixes and automatically update child branches
pq modify -m "Fix token validation"
# Sync with remote main and update stack
pq sync
# Update any remaining child branches if needed
pq update
# Create PRs for your entire stack with a single command
pq pr
# When the first PR is approved, merge it and update the stack
pq merge auth-backend
Advanced Features
Sync with Remote Main Branch
Keep your branch stack up to date with remote changes:
# Sync with remote main and update stack
pq sync
Track, Untrack, and Rename Git Branches
Add branches created outside panqake to your stack:
pq track feature-branch
# You can use the list alias to see your branch structure
pq ls
# Use the switch alias to move between branches
pq co auth-frontend
Remove a branch from the panqake stack without deleting the git branch:
pq untrack feature-branch
Rename a branch while preserving its stack relationships:
# Rename the current branch
pq rename new-branch-name
# Rename a specific branch
pq rename old-branch-name new-branch-name
Flexible Commit Creation
# Amend existing Commit
pq modify
# Force creating a new commit instead of amending
pq modify --no-amend
# Or explicitly
pq modify --commit -m "New feature implementation"
Delete a Branch While Preserving the Stack
pq delete feature-old
Quick Branch Navigation
Navigate up and down the branch stack directly:
# Move up to the parent branch
pq up
# Move down to a child branch
# If there are multiple children, you'll be prompted to select one
pq down
Why Choose Panqake
- Designed for real workflows: Stack PRs without effort
- Reduces context switching by making branch navigation seamless
- Single command operations: Complex git operations condensed to simple commands
- GitHub integration: Seamlessly works with GitHub PRs
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file panqake-0.13.0.tar.gz.
File metadata
- Download URL: panqake-0.13.0.tar.gz
- Upload date:
- Size: 29.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfca1e6d2afec89c6ce1d4962acff48dbe0875b8ec81960a05707e84768ceccd
|
|
| MD5 |
44a5e375f5dac3ce5407883ae633ec86
|
|
| BLAKE2b-256 |
861b26958beebdb5a21fd0e03d55cc9f36b233371972681012576313e70b7601
|
File details
Details for the file panqake-0.13.0-py3-none-any.whl.
File metadata
- Download URL: panqake-0.13.0-py3-none-any.whl
- Upload date:
- Size: 42.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91cc405285d9a291b0b217e9563e97acc0fd6431712f4d88c82ee8a29d98c6b1
|
|
| MD5 |
9f5c718bf286c49ab0988b6b230e9b97
|
|
| BLAKE2b-256 |
ec392e07d2891075030ae651a9329248f31d4fa057be4e497e21c0de29d7b012
|