A powerful Git GUI client for Linux, inspired by SourceTree for macOS/Windows.
- Multi-tab Repository Support - Work with multiple repositories simultaneously
- Visual Commit History - Beautiful branch graph visualization
- Working Copy Management - Stage, unstage, and commit changes with ease
- Diff Viewer - View file changes with syntax highlighting
- Branch Operations - Create, merge, and switch branches
- Remote Operations - Push, pull, and fetch from remotes
- Stash Management - Save and apply work in progress
- Tag Management - Create and view tags
- Bookmark System - Quick access to recent repositories
Clean interface to open, clone, or create repositories with recent bookmarks.
Visual branch graph with detailed commit information.
Intuitive file staging area with status indicators.
- Electron 33 - Desktop application framework
- React 18 - Modern UI library
- Vite 6 - Lightning-fast build tool
- simple-git 3.x - Pure Node.js Git library
- electron-builder - Application packaging
- Node.js 18+ or npm/yarn
- Git installed on your system
# Clone the repository
git clone <your-repo-url>
cd sourcetree-linux
# Install dependencies
npm install
# or
yarn install# Terminal 1: Start Vite dev server
npm run dev
# Terminal 2: Start Electron
npm run electron:dev# Build the React application
npm run build
# Package as AppImage
npm run distThe AppImage will be created in the release/ directory.
- Open Existing: Browse and select a Git repository folder
- Clone: Enter a remote URL and destination path
- Create New: Initialize a new Git repository
- Navigate to "Working Copy" in the sidebar
- Stage individual files or use "Stage All"
- Click "Commit" in the toolbar to commit changes
- Write your commit message and confirm
- Create: Click "Branch" in toolbar and enter a name
- Switch: Click on any branch in the sidebar
- Merge: Click "Merge" and select a branch to merge
- Push: Share your commits with remote repository
- Pull: Fetch and merge changes from remote
- Fetch: Download remote changes without merging
The application uses Electron's recommended security pattern:
- contextBridge: Secure IPC communication
- contextIsolation: Renderer process isolation
- No nodeIntegration: Enhanced security
All Git operations run in the main process via IPC handlers:
- Repository operations (clone, init, status, log)
- File operations (stage, unstage, commit, discard)
- Branch operations (create, delete, checkout, merge)
- Remote operations (push, pull, fetch)
- Stash operations (save, apply, drop, list)
- Tag operations (create, list)
src/
โโโ App.jsx # Main application
โโโ components/
โ โโโ WelcomeScreen.jsx # Landing page
โ โโโ RepositoryView.jsx # Main repo interface
โ โโโ CommitHistory.jsx # Commit log
โ โโโ WorkingCopy.jsx # File staging
โ โโโ DiffViewer.jsx # Diff display
โ โโโ dialogs/ # Action dialogs
โ โโโ BranchDialog.jsx
โ โโโ CommitDialog.jsx
โ โโโ MergeDialog.jsx
โ โโโ ...
sourcetree-linux/
โโโ main.js # Electron main process
โโโ preload.js # IPC bridge
โโโ index.html # Entry HTML
โโโ package.json # Dependencies
โโโ vite.config.js # Vite config
โโโ README.md # This file
โโโ PROJECT_SUMMARY.md # Detailed documentation
โโโ sourcetree-linux-source.zip # Source code archive
โโโ src/ # React application
โโโ main.jsx
โโโ App.jsx
โโโ App.css
โโโ components/
SourceTree-inspired professional theme:
- Clean light interface
- Purple gradient accents
- Color-coded status indicators
- Intuitive iconography
- x86_64 and .deb packages
- Git flow integration
- SSH key management
- Conflict resolution UI
- Settings panel
- Search in history
- File history view
- Blame viewer
- Submodule support
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by SourceTree
- Built with Electron
- Powered by React
- Uses simple-git
For issues, questions, or suggestions, please open an issue on GitHub.
Made with โค๏ธ for the Linux community