Problem Statement

Git is essential, but the workflow around it is unnecessarily painful — especially for developers still building confidence with it.

You have to remember the right sequence of commands, configure remotes, set upstream branches, handle authentication, and decode cryptic error messages when something goes wrong. Even experienced developers waste time on this. Forget to stage a file, push to the wrong branch, or hit a credential error and suddenly you're on Stack Overflow instead of writing code.

Existing solutions don't quite hit the mark. GUI clients are heavy and disconnect you from the terminal. Tools like lazygit are powerful but built for people who already know Git well. There's nothing lightweight, terminal-native, and genuinely approachable sitting in between.

That's the gap SwiftGit fills.


Proposed Solution

SwiftGit is a minimal terminal-based Git client that turns the most common Git workflows into a clean, keyboard-driven interface — without pulling you out of the terminal.

Open a folder, clone a repo, or continue a recent project from a simple dashboard. If the folder isn't a Git repository, SwiftGit initializes one automatically. Your changed files appear in a collapsible folder tree. Stage what you want, write your commit message inline, and push — all in a few keypresses. Authentication via GitHub PAT is configured once and never touched again.

When cloning, SwiftGit fetches the repository's full file tree before downloading anything. Instead of cloning an entire repo for one or two files, you pick exactly what you need. Full clone is still one keypress away.

Branch creation and switching are built in. An optional AI layer using Groq can generate commit messages from your diff, explain errors in plain English, and summarize file changes — useful for anyone still building their Git intuition.

Built with Ratatui in Rust. Fast, SSH-friendly, no mouse required.


Execution Plan

Phase 1 — Core Git Workflow

Getting the fundamental loop working reliably: open a repository, view file status, stage, commit, and push.

Delivered:

  • Dashboard with Open Folder, Clone Repo, and Recent Projects
  • File status view with stage / unstage per file
  • Inline commit input and push with PAT authentication
  • Auto git init on new folders with main as default branch

Phase 2 — GitHub Integration

Extending the clone flow with the GitHub API so users aren't forced to download everything.

Delivered:

  • GitHub API file tree fetch on clone
  • File picker UI with per-file selection and size info
  • Selective download preserving directory structure
  • One-key fallback to full clone

Phase 3 — Usability and Branch Management

Addressing friction points from testing and adding branch workflows.

Delivered:

  • Branch creation and switching built into the interface
  • Directory autocomplete with live dropdown in folder input
  • Collapsible folder tree in repo view, collapsed by default
  • First-push upstream handling so git push never fails on a new branch
  • Spinner indicators on every async operation
  • main as default branch throughout

Phase 4 — AI Assistance (In Progress)

Optional AI integration via Groq — fully additive, works without it if no key is configured.

Planned:

  • Commit message generation from current diff
  • Git error explanation in plain English
  • File change summary on selected diff

Phase 5 — Advanced Features (Roadmap)

  • Merge handling and basic conflict resolution
  • Repository creation from the dashboard via GitHub API
  • Stash management
  • Multi-remote support

Built With

Share this project:

Updates