{"id":27398000,"url":"https://github.com/gni/gitup","last_synced_at":"2026-01-24T10:36:06.455Z","repository":{"id":253004134,"uuid":"842214105","full_name":"gni/gitup","owner":"gni","description":"Manage Git identity across multiple accounts and projects.","archived":false,"fork":false,"pushed_at":"2025-06-25T12:02:51.000Z","size":22,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-17T21:48:09.458Z","etag":null,"topics":["git","git-config","git-configuration"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gni.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-13T22:52:03.000Z","updated_at":"2025-06-25T12:02:54.000Z","dependencies_parsed_at":"2024-11-25T09:06:44.559Z","dependency_job_id":"4cad8b60-7c0b-4dbb-8ca3-30534b8d693a","html_url":"https://github.com/gni/gitup","commit_stats":null,"previous_names":["exaluc/gitup","ioluc/gitup","gni/gitup"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gni/gitup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gni%2Fgitup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gni%2Fgitup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gni%2Fgitup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gni%2Fgitup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gni","download_url":"https://codeload.github.com/gni/gitup/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gni%2Fgitup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28725374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","git-config","git-configuration"],"created_at":"2025-04-14T01:26:16.991Z","updated_at":"2026-01-24T10:36:06.450Z","avatar_url":"https://github.com/gni.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gitup 🚀\n\n**Manage your Git identity across multiple accounts and projects.**\n\n[![Crates.io](https://img.shields.io/crates/v/gitup.svg)](https://crates.io/crates/gitup)\n\n`gitup` is cross-platform CLI tool designed to check, install, and manage your Git configurations with ease. The **profile management**, allows to switch between work, personal, and other Git accounts with a single command.\n\n\n## Table of Contents\n\n- [Key Features](#key-features)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Initial Setup](#initial-setup)\n  - [Checking Configuration](#checking-configuration)\n  - [Profile Management](#profile-management)\n  - [Shell Completions](#shell-completions)\n  - [Non-Interactive Configuration](#non-interactive-configuration)\n- [Configuration](#configuration)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Key Features\n\n- **Git Installation Check**: Verifies if Git is installed on your system.\n- **Cross-Platform Guidance**: If Git is not installed, `gitup` provides the correct installation command for your OS.\n- **Interactive Setup**: A guided `gitup setup` command for new users that configures name, email, and signing key, then offers to save it all as a profile.\n- **Cryptographic Signing**: Associate GPG/SSH signing keys with your profiles to ensure all commits for that identity are automatically and correctly signed.\n- **Effortless Profile Management**: Save multiple Git configurations and switch between them seamlessly.\n- **Interactive Switching**: Simply run `gitup use` to get an interactive list of profiles to choose from.\n- **Shell Completions**: Generate completion scripts for Bash, Zsh, Fish, and other shells for a faster workflow.\n- **Script-Friendly**: A global `--json` flag provides machine-readable output for all commands.\n- **Secure by Design**: Does not require or execute commands with `sudo` itself; it empowers the user to run provided installation commands securely.\n\n## Installation\n\nYou will need the Rust toolchain (version 1.70 or newer) installed.\n\n1.  **Install from Crates.io (Recommended):**\n    ```sh\n    cargo install gitup\n    ```\n\n2.  **Build from Source:**\n    ```sh\n    # Clone the repository\n    git clone https://github.com/gni/gitup.git\n    cd gitup\n\n    # Build the release binary\n    cargo build --release\n\n    # The executable will be at `target/release/gitup`\n    # For global access, move it to a directory in your PATH\n    mv target/release/gitup /usr/local/bin/\n    ```\n\n## Usage\n\n### Initial Setup\n\nFor first-time use, the `setup` command is the best starting point. It will guide you through setting your name, email, and an optional GPG/SSH signing key. It will then ask if you want to save the result as your first profile.\n\n```sh\ngitup setup\n````\n\n### Checking Configuration\n\nTo see your current global `user.name`, `user.email`, `user.signingkey`, and the active `gitup` profile.\n\n```sh\ngitup check\n```\n\n*Alias: `gitup status`*\n\n### Profile Management\n\nThis is the core feature for managing multiple Git identities.\n\n#### Switch Profiles (Easy Switch)\n\nRun `use` without a name for an interactive selector. This is the easiest way to switch contexts.\n\n```sh\n$ gitup use\n\n? Select a profile to use ›\n  personal\n❯ work\n```\n\nOr switch directly if you know the name: `gitup use personal`\n\n#### Save a New Profile\n\nThis command reads your **current global Git configuration** (including signing key) and saves it as a named profile.\n\n```sh\n# First, ensure your global config is what you want to save\ngitup set -n \"Work User\" -e \"work.user@example.com\" -s \"A1B2C3D4\"\n\n# Then, save it\ngitup save work\n```\n\n#### List All Saved Profiles\n\n```sh\ngitup list\n```\n\n*Alias: `gitup ls`*\n\nYou will see a list of your profiles, with the active one highlighted.\n\n```\nSaved Profiles\n  - personal\n  - work (active)\n```\n\n#### Show the Active Profile\n\n```sh\ngitup current\n```\n\n*Alias: `gitup active`*\n\n#### Delete a Profile\n\n```sh\ngitup delete work\n```\n\n*Alias: `gitup rm`*\n\n### Shell Completions\n\nTo enable shell completions, you need to generate the script for your shell and source it in your shell's configuration file (e.g., `.bashrc`, `.zshrc`).\n\n#### Bash\n\nAdd the following to your `~/.bashrc`:\n\n```sh\neval \"$(gitup completions bash)\"\n```\n\n#### Zsh\n\nAdd the following to your `~/.zshrc`:\n\n```sh\neval \"$(gitup completions zsh)\"\n```\n\n#### Fish\n\nAdd the following to your `~/.config/fish/config.fish`:\n\n```sh\ngitup completions fish | source\n```\n\n### Non-Interactive Configuration\n\nFor use in scripts or CI/CD environments.\n\n```sh\n# Set config using long flags\ngitup set --name \"User\" --email \"user@example.com\" --signing-key \"A1B2C3D4\"\n\n# Or with short flags\ngitup set -n \"User\" -e \"user@example.com\" -s \"A1B2C3D4\"\n\n# Unset a signing key by passing an empty string\ngitup set -s \"\"\n\n# Flags can also be populated from environment variables\nexport GITUP_USER_NAME=\"User\"\nexport GITUP_USER_EMAIL=\"user@example.com\"\nexport GITUP_SIGNING_KEY=\"A1B2C3D4\"\ngitup set\n```\n\n## Configuration\n\n`gitup` stores its profile data in a simple JSON file located at:\n\n  - **Linux/macOS:** `$HOME/.config/gitup/config.json`\n  - **Windows:** `{FOLDERID_RoamingAppData}\\gitup\\config.json`\n\nIt is recommended to manage this file through the CLI commands.\n\n## Contributing\n\nContributions, issues, and feature requests are welcome. Please check the [issues page](https://github.com/gni/gitup/issues) for this project.\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Author\nLucian BLETAN","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgni%2Fgitup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgni%2Fgitup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgni%2Fgitup/lists"}