Gitor.Cli 1.0.3

dotnet tool install --global Gitor.Cli --version 1.0.3
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Gitor.Cli --version 1.0.3
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Gitor.Cli&version=1.0.3
                    
nuke :add-package Gitor.Cli --version 1.0.3
                    

<div align="center">

<img src="assets/gitor_logo.png" alt="GITOR Logo" width="250">

<h1>GITOR โ€” Git Orchestrator</h1>

<p> <b>Multi-repository management CLI for microservice teams.</b><br/> Pull, compare, sync, and clean up dozens of repos in seconds. </p>

<p> <a href="https://github.com/kovercc/gitor/actions/workflows/ci.yml"><img src="https://github.com/kovercc/gitor/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <a href="https://github.com/kovercc/gitor/releases"><img src="https://github.com/kovercc/gitor/actions/workflows/release.yml/badge.svg" alt="Release"></a> <a href="https://github.com/kovercc/gitor/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT"></a> </p>

</div>

<div align="center"> <img src="assets/demo.gif" alt="Gitor Demo"> </div>


โœจ Features

  • ๐Ÿ“Š Dashboard: See all repositories at a glance: current branch, dirty/clean state, ahead/behind counts.
  • โฌ‡๏ธ Pull All: Fetch and pull every repository in parallel with one keypress.
  • ๐Ÿ”€ Checkout Branch: Switch all repositories to a branch simultaneously. Dirty repos are safely skipped.
  • ๐Ÿ” Compare Branches: Bidirectional branch comparison inside the console: commit logs, per-file stats with visual change bars, and inline colored diffs.
  • ๐Ÿ”„ Deep Compare & Sync: Detect real file differences that git may miss after squash merges. Creates worktrees (no re-clone needed), shows a filesystem-level preview, opens your diff tool (WinMerge, Beyond Compare, Meld, KDiff3, P4Merge, DiffMerge, or VS Code), then commits, pushes, and opens a PR.
  • ๐Ÿ—๏ธ PR Creation: Supports Azure DevOps, GitHub, GitLab, and Bitbucket. Opens the "Create PR" page in your browser with source and target branches pre-filled.
  • ๐Ÿงน Cleanup Gone Branches: Automatically deletes local branches whose remote tracking branch has been removed.
  • ๐Ÿ“ Repository Groups: Organize repos into virtual folders (Frontend, Backend, etc.) for quick filtering.
  • ๐Ÿ’ป Git Shell: Interactive git-only shell scoped to a selected repository.
  • ๐Ÿ› ๏ธ Case-Sensitivity Auto-Fix: Detects case-insensitive filesystem errors during pull and automatically migrates the repository to the reftable backend.

๐Ÿ“ฆ Installation

Native AOT binary โ€” no .NET runtime required. Download, add to PATH, and run gitor.

Platform Download
Windows x64 gitor-win-x64.exe
Linux x64 gitor-linux-x64
macOS ARM (M1+) gitor-osx-arm64

Option B: As a .NET Global Tool

Requires .NET 10 runtime.

dotnet tool install -g Gitor.Cli

โšก Quick Start

# First run โ€” the setup wizard will guide you
gitor

# Option A: scan an existing folder with repos
> Choose setup mode: Scan existing folders
> Enter root folder path: C:\Projects

# Option B: clone from a list of URLs
> Choose setup mode: Clone repositories from URLs
> Where to create repositories folder?: C:\Work
> (paste URLs, one per line, then press Enter on empty line)

โŒจ๏ธ Keyboard Shortcuts (Main Menu)

Key Action
1โ€“9 Quick select menu item
0 Last item (Exit/Back)
โ†‘ / โ†“ or k / j Navigate
Enter Confirm
Esc or Q Back / Exit

๐Ÿ’ป Command Line Interface (CLI)

While running gitor opens the interactive dashboard, you can also use CLI commands for specific operations. Add the --help flag to any command for more details.

Available Commands:

  • gitor status โ€” Show repository status table and exit.
  • gitor pull โ€” Pull all repositories.
  • gitor checkout <branch> โ€” Checkout a specific branch in all repositories.
  • gitor compare <branchA> <branchB> โ€” Non-interactive deep compare between two branches.
  • gitor prune โ€” Delete local branches whose remote tracking branch has been deleted.

Global Options:

  • -g or --group <GROUP> โ€” Filter repositories by a specific group defined in configuration. Can be used with any of the above commands (e.g., gitor pull -g Backend).

โš™๏ธ Configuration & Requirements

Requirements:

  • .NET 10 SDK (only for building from source)
  • git 2.37+ must be available in PATH
  • For Deep Compare: an external diff tool is recommended.

Storage:

  • Config is stored in %APPDATA%/Gitor/config.json (Windows) or ~/.config/Gitor/config.json (Linux/macOS).
  • Logs are written to %APPDATA%/Gitor/logs/ with daily rotation (7 days retained).

๐ŸŒ Supported Git Providers

Provider PR URL Generation Tested
Azure DevOps โœ… HTTPS + SSH โœ…
GitHub โœ… HTTPS + SSH โœ…
GitLab โœ… HTTPS + SSH โœ…
Bitbucket โœ… HTTPS + SSH โœ…

๐Ÿ› ๏ธ Building from Source

git clone https://github.com/kovercc/gitor.git
cd gitor
dotnet build
dotnet run --project Gitor.ConsoleApp

Publishing a native AOT binary

# Windows
dotnet publish Gitor.ConsoleApp -c Release -r win-x64

# Linux
dotnet publish Gitor.ConsoleApp -c Release -r linux-x64

# macOS Apple Silicon
dotnet publish Gitor.ConsoleApp -c Release -r osx-arm64

All AOT / self-contained / trimming settings are already configured in the .csproj.

Running Tests

dotnet test

๐Ÿ“ Project Structure

โ”œโ”€โ”€ Gitor.Core/               # Domain: models, interfaces, helpers (zero dependencies)
โ”‚   โ”œโ”€โ”€ Configuration/                 #   UserConfig, DiffToolSettings, RepositoryGroup, GitProvider
โ”‚   โ”œโ”€โ”€ Entities/                      #   GitRepository
โ”‚   โ”œโ”€โ”€ Exceptions/                    #   GitException, GitErrorCode
โ”‚   โ”œโ”€โ”€ Helpers/                       #   PR URL builders, GitUrlValidator, FileSystemDiffHelper
โ”‚   โ”œโ”€โ”€ Interfaces/                    #   IGitService, IDiffService, IUserConfigService, ...
โ”‚   โ””โ”€โ”€ Models/                        #   BatchResult, CommitInfo, DiffStat, DiffLine, FileSystemDiffResult
โ”‚
โ”œโ”€โ”€ Gitor.Infrastructure/     # Git CLI wrapper, file-based config, diff tool launcher
โ”‚   โ”œโ”€โ”€ Constants/                     #   GitConsts, DiffToolConsts
โ”‚   โ””โ”€โ”€ Services/                      #   CliWrapGitService, ConfigurableDiffService, FileUserConfigService, ...
โ”‚
โ”œโ”€โ”€ Gitor.ConsoleApp/         # Spectre.Console UI, workflows, DI composition root
โ”‚   โ”œโ”€โ”€ UI/                            #   ConsoleTheme, DiffRenderer, GroupedMenu, BranchHelper, LogoRenderer
โ”‚   โ”œโ”€โ”€ Workflows/                     #   SetupWorkflow, NavigationWorkflow, CompareWorkflow, MaintenanceWorkflow
โ”‚   โ””โ”€โ”€ Constants/                     #   AppConsts, MenuDefinitions, Enums
โ”‚
โ””โ”€โ”€ Gitor.Tests/              # Unit tests (xUnit)

๐Ÿค Contributing

See CONTRIBUTING.md for guidelines.

๐Ÿ“„ License

MIT

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.0.3 88 2/27/2026