Umberto Allievi Soluzioni Informatiche
TheGit

TheGit

Version 0.3.0

Graphical Git client for GNOME with commit history, diff viewer, and staging support.

C++20GTK4libadwaitalibgit2GtkSourceViewWinUI — soonVibe Coded
TheGit screenshot

Features

Three-Panel Interface

Branches and tags sidebar, commit history with graph visualization, and diff viewer with file list — all in a single, resizable window.

Commit History with Graph

Reverse-chronological commit table with visual indicators (● regular, ○ merge), abbreviated SHA, author, relative dates, and full commit messages.

Syntax-Highlighted Diffs

GtkSourceView-powered diff viewer with automatic language detection for 300+ languages. File status prefixes (M/A/D/R/?) for quick identification.

Staging and Committing

Stage/unstage files individually or in bulk. Commit with a message directly from the UI. Branch list and history refresh automatically after commits.

Branch and Tag Navigation

Sidebar shows local branches, remote branches, and tags with icons. Click to switch branches — commit history updates instantly.

Repository Discovery

Drag a folder onto the window to recursively scan for Git repositories. A tree view shows all found repos — click to open any of them.

Recent Repositories

Welcome page lists up to 50 recently opened repositories with name, branch, and path. One click to reopen.

Meld Integration

Right-click any file to open an external side-by-side diff in Meld. Also supports open in editor, stage, unstage, and discard changes.

Use Cases

Daily Git Workflow

Open your project, review working tree changes, stage files, and commit — all without leaving the GNOME desktop.

Code Review

Browse commit history, select a commit, and review its diffs with syntax highlighting. Click through changed files in the file list.

Branch Exploration

Switch between branches in the sidebar to compare commit histories. Quickly navigate local, remote, and tag references.

Multi-Repository Workspace

Drag a workspace folder to discover all Git repositories inside it. Open any repo from the discovery tree view.

Selective Staging

Stage individual files from the working tree. Use the context menu to discard unwanted changes before committing.

User Manual

Quick Start

  1. Launch TheGit from GNOME Activities or terminal
  2. Click the Open button (folder icon) or press Ctrl+O
  3. Select a folder containing a Git repository
  4. Browse branches in the sidebar, commits in the history, and diffs in the viewer
  5. Select "Working Tree Changes" to see uncommitted modifications

Opening a Repository

Three ways to open a repository:

  • Open button: Click the folder icon or press Ctrl+O and select a folder
  • Drag and drop: Drag a folder onto the window. If it contains multiple repos, a discovery panel shows a tree of all found repositories
  • Recent repositories: On the welcome page, click any repo in the recent list

The welcome page shows up to 50 recently opened repositories with name, branch, and path. Click x to remove entries.

Window Layout

┌──────────┬───────────────────────────────────────┐
│          │         Commit History                 │
│ Branches ├───────────────────────────────────────┤
│  & Tags  │         Commit Details                │
│          ├──────────┬────────────────────────────┤
│          │File List │   Diff Viewer              │
│          ├──────────┴────────────────────────────┤
│          │         Action Bar (staging)           │
└──────────┴───────────────────────────────────────┘

Left sidebar — Branches & Tags:

SectionIconDescription
Local BranchesCheckmark (HEAD) or genericLocal branch references
Remote BranchesNetworkRemote tracking branches
TagsTagAnnotated and lightweight tags

Top-right — Commit history in reverse chronological order. First row is always "Working Tree Changes".

Bottom-right — File list with status prefixes (M/A/D/R/?) and syntax-highlighted diff viewer.

Commit Details

Select a commit to see:

  • SHA: Full 40-character hash (selectable for copying)
  • Author: Name and email
  • Date: Formatted as YYYY-MM-DD HH:MM:SS
  • Message: Full commit message (URLs are clickable)
  • Parents: Parent commit OIDs
  • Working tree path: Repository location on disk

The commit history table shows:

ColumnDescription
Graph regular commits, merge commits
SHA7-character abbreviated hash
MessageFirst line of commit message
AuthorAuthor name
DateRelative timestamp (e.g., "2 hours ago")

Working with Changes

Select "Working Tree Changes" (first row in commit list) to see uncommitted modifications.

Staging files:

  • Per-file: Click the stage/unstage button next to each file
  • Stage All / Unstage All: Buttons in the action bar
  • Context menu: Right-click a file for stage/unstage options

Committing:

  1. Select "Working Tree Changes"
  2. Stage the files you want
  3. Type a commit message in the text field
  4. Click Commit

Branch list and history refresh automatically after committing.

Discarding changes: Right-click a file → Discard Changes to revert to HEAD. This cannot be undone.

Context Menu

Right-click any file in the diff panel (when viewing working tree changes):

ActionDescription
Open in EditorOpens with the system default application
Stage FileStage the file (disabled if already staged)
Unstage FileUnstage the file (disabled if not staged)
Discard ChangesRevert file to HEAD
Compare with MeldOpen external side-by-side diff in Meld

Repository Discovery

Drag a folder onto the window to scan recursively for Git repositories:

  1. A tree view shows the folder hierarchy
  2. Folders with .git are marked as repositories
  3. Click Open next to any discovered repo
  4. Click x to close the discovery panel

Useful for exploring a workspace with many repositories.

Keyboard Shortcuts

ShortcutAction
Ctrl+OOpen repository
F5Refresh branches, commits, and working tree status

Configuration

Recent repositories stored in:

~/.config/adw-git/recent-repos.conf
  • Up to 50 repositories remembered
  • Most recently opened first
  • Non-existent repositories removed automatically
  • Remove entries from the welcome page with the x button

Tips

  • Quick navigation: Use the sidebar to jump between branches — history updates instantly
  • Copy SHA: Click the full SHA in commit details to select it, then Ctrl+C
  • External diff: Use "Compare with Meld" from the context menu
  • Large repositories: Commit log limited to 500 entries per branch for performance
  • Refresh: Press F5 after making changes outside TheGit (e.g., from the command line)