| Crates.io | gitp |
| lib.rs | gitp |
| version | 0.1.0 |
| created_at | 2025-06-02 14:26:20.710232+00 |
| updated_at | 2025-06-02 14:26:20.710232+00 |
| description | A fast git profile switcher with SSH and HTTPS support |
| homepage | |
| repository | https://github.com/created-by-varun/gitp |
| max_upload_size | |
| id | 1698014 |
| size | 193,942 |
A fast and intuitive git profile switcher written in Rust, with support for SSH keys, HTTPS credentials, and both global and local configurations.
# Make sure you have Rust installed
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Clone and install
git clone https://github.com/created-by-varun/gitp.git
cd gitp
cargo install --path .
cargo install gitp
Create a profile:
# Enter interactive mode
gitp new work
# Or with flags
gitp new personal --email "me@example.com" --name "John Doe"
List profiles:
gitp list
Switch profiles:
# Switch globally
gitp use work
# Switch for current repo only
gitp use personal --local
Check current profile:
gitp current
# Create a new profile interactively
gitp new <profile-name> --interactive
# Create with specific settings
gitp new work \
--name "John Doe" \
--email "john@company.com" \
--ssh-key ~/.ssh/id_rsa_work
# Show profile details
gitp show work
# Edit existing profile
gitp edit work # Opens interactive mode
# Edit specific fields, including HTTPS credentials:
gitp edit work \
--https-host github.com \
--https-username myuser \
--https-token "ghp_xxxxxxxxxxxxxxxxxxxx" \
--https-store-in-keychain # Store the token in system keychain
# Remove HTTPS credentials from a profile (and keychain if stored there):
gitp edit work --https-remove-credentials
# Remove a profile
gitp remove work
# Rename a profile
gitp rename work work-backup
# Switch globally (default)
gitp use personal
# Switch for current repository only
gitp use work --local
# Show current profile
gitp current
gitp current --show-config # With full configuration
Profiles are stored in ~/.config/gitp/config.toml:
current_profile = "work"
[profiles.work]
name = "John Doe"
email = "john@company.com"
ssh_key = "~/.ssh/id_rsa_work"
gpg_key = "ABCD1234"
[profiles.personal]
name = "John Doe"
email = "john@personal.com"
ssh_key = "~/.ssh/id_rsa_personal"
gitp/
├── src/
│ ├── main.rs # Entry point
│ ├── cli.rs # CLI definitions
│ ├── commands/ # Command implementations
│ ├── config/ # Configuration management
│ ├── credentials/ # Credential management (keychain, tokens)
│ ├── git/ # Git operations
│ ├── ssh/ # SSH configuration management
│ └── utils/ # Utilities
├── tests/ # Integration tests
└── Cargo.toml
# Debug build
cargo build
# Release build
cargo build --release
# Run tests
cargo test
# Run with verbose output
cargo run -- --verbose list
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT).