A Git subcommand for managing work-in-progress changes across branches. Stash with super powers! 🦸♂️
- 🔄 Save WIP changes to a dedicated branch
- 📋 List all your WIP branches
- ⚡ Restore WIP changes back to their original branches
- 🔒 Thread-safe and async operations
- 🌟 Maintains file states (staged, unstaged, untracked)
- 🔍 Smart branch naming with username and timestamps
- 🔄 Interactive branch selection for restore operations
- 🌐 Supports both local and remote operations
Coming soon!
- Install Rust and cargo
- Clone this repository
- Build and install:
cargo install --path .
When git-wippy
is located somewhere in your executable paths it can be used as a git
subcommand.
# Save your WIP changes (pushes to remote by default)
git wippy save [--message "Your message"]
git wippy save --local # Save locally only
# List all your WIP branches
git wippy list
git wippy list --all # Show all users' WIP branches
# Restore changes from a WIP branch
git wippy restore # Interactive selection
git wippy restore <branch-name> # Direct restore
# Save changes with a custom message
git wippy save -m "Feature work in progress"
# List only your WIP branches with details
git wippy list
# Restore specific WIP changes
git wippy restore wip/username/2024-03-21-175930
-
Saving Changes:
- Creates a WIP branch named
wip/{username}/{timestamp}
- Preserves the state of all files (staged, unstaged, untracked)
- Stores metadata about the source branch
- Optionally pushes to remote
- Creates a WIP branch named
-
Listing Changes:
- Shows all WIP branches for the current user
- Displays branch creation time and source branch
- Supports filtering and detailed views
- Color-coded output for better readability
-
Restoring Changes:
- Interactive branch selection with preview
- Smart conflict resolution
- Recreates original file states
- Automatic cleanup of restored WIP branches
- Git 2.0+
- Rust 1.70+
# Run all tests
cargo test
# Run specific test suite
cargo test <test_name>
- Fork the project
- Create a new branch
- Make your changes and commit them
- Push your changes to your fork
- Create a pull request
Please ensure your PR:
- Includes tests for new functionality
- Updates documentation as needed
- Follows the existing code style
Built with:
- 🦀 Rust for performance and safety
- 🔄 tokio for async operations
- 📎 clap for CLI argument parsing
- 🎨 owo-colors for terminal coloring
- 🔍 dialoguer for interactive prompts
This project is licensed under the MIT License.