Top Related Projects
Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada:
simple terminal UI for git commands
Text-mode interface for git
GitHub’s official command line tool
It's Magit! A Git Porcelain inside Emacs.
Quick Overview
Delta is a syntax-highlighting pager for git, diff, and grep output. It enhances the readability of diffs by adding features like side-by-side view, line numbering, and syntax highlighting. Delta aims to improve the git diff experience with a focus on aesthetics and functionality.
Pros
- Improved readability with syntax highlighting and side-by-side diffs
- Customizable themes and color schemes
- Integration with popular version control systems like Git
- Support for various output formats (e.g., diff, grep)
Cons
- Requires installation and configuration, which may be a barrier for some users
- Performance may be slower compared to standard diff tools for very large diffs
- Learning curve for advanced features and customizations
Getting Started
To install Delta, you can use various package managers depending on your operating system:
# macOS (using Homebrew)
brew install git-delta
# Ubuntu/Debian
sudo apt install delta
# Arch Linux
sudo pacman -S delta
# Using Cargo (Rust package manager)
cargo install git-delta
After installation, configure Git to use Delta as the pager:
git config --global core.pager "delta"
git config --global interactive.diffFilter "delta --color-only"
You can customize Delta's appearance by adding options to your ~/.gitconfig
file:
[delta]
features = side-by-side line-numbers decorations
syntax-theme = Dracula
plus-style = syntax "#003800"
minus-style = syntax "#3f0001"
With these configurations, Delta will be used automatically when you run git commands that produce diff output, providing an enhanced viewing experience.
Competitor Comparisons
Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada:
Pros of diff-so-fancy
- Lighter and faster, with fewer dependencies
- Simpler setup and configuration
- Works well out of the box with minimal tweaking required
Cons of diff-so-fancy
- Less customizable than delta
- Fewer features and visual enhancements
- Limited syntax highlighting capabilities
Code Comparison
diff-so-fancy:
git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
git config --global interactive.diffFilter "diff-so-fancy --patch"
delta:
git config --global core.pager "delta"
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.light false
git config --global delta.side-by-side true
Summary
diff-so-fancy is a lightweight and easy-to-use git diff enhancer that provides improved readability with minimal setup. It's ideal for users who want a quick improvement to their git diff output without extensive configuration.
delta, on the other hand, offers more advanced features, customization options, and visual enhancements. It provides richer syntax highlighting and side-by-side diffs, making it suitable for users who want more control over their diff output and are willing to invest time in configuration.
Both tools significantly improve the default git diff experience, but delta offers more power and flexibility at the cost of increased complexity and setup time.
simple terminal UI for git commands
Pros of lazygit
- Provides a full-featured terminal UI for Git operations
- Offers interactive staging, committing, and branch management
- Supports custom keybindings and extensive configuration options
Cons of lazygit
- Steeper learning curve due to more complex interface
- Requires more system resources as a full TUI application
- May be overkill for users who only need diff viewing capabilities
Code comparison
lazygit (configuration example):
gui:
theme:
activeBorderColor:
- green
- bold
inactiveBorderColor:
- white
delta (usage example):
git diff | delta
Key differences
- Purpose: lazygit is a comprehensive Git TUI, while delta is focused on enhancing diff and log output
- Scope: lazygit covers a wide range of Git operations, delta specializes in improving diff readability
- Integration: delta integrates seamlessly with existing Git commands, lazygit provides a standalone interface
Use cases
- lazygit: Ideal for users who prefer a visual interface for Git operations and want a more interactive experience
- delta: Best for developers who work primarily in the command line and want to enhance their diff viewing experience
Both tools offer valuable functionality for Git users, with lazygit providing a more comprehensive solution and delta focusing on a specific aspect of Git workflow.
Text-mode interface for git
Pros of tig
- More comprehensive Git repository browser with support for various views (log, diff, blame, etc.)
- Lightweight and runs entirely in the terminal, suitable for remote server use
- Highly customizable with keybindings and color schemes
Cons of tig
- Less visually appealing diff output compared to delta's syntax highlighting
- Lacks some advanced features like side-by-side diffs and word-level diff highlighting
- Steeper learning curve for new users due to its extensive functionality
Code comparison
tig:
$ tig
delta:
$ git diff | delta
tig focuses on providing a full-featured Git repository browser, while delta specializes in enhancing diff output. tig is used as a standalone application, whereas delta is typically integrated into Git commands or used as a pager.
tig offers a more comprehensive set of features for navigating and exploring Git repositories, making it suitable for users who prefer an all-in-one tool. delta, on the other hand, excels at producing visually appealing and informative diff output, making it ideal for users who prioritize readability and aesthetics when reviewing changes.
Both tools have their strengths and can be used complementarily depending on the user's needs and preferences.
GitHub’s official command line tool
Pros of cli
- Provides a comprehensive CLI interface for GitHub, covering a wide range of GitHub operations
- Official GitHub tool, ensuring better integration and support
- Regularly updated with new GitHub features and improvements
Cons of cli
- Larger scope and complexity, potentially overwhelming for users who only need diff viewing
- Requires GitHub authentication, which may not be necessary for local diff viewing
- Higher resource usage due to its broader feature set
Code comparison
delta:
let config = Config::from_env()?;
let mut printer = Printer::new(&config);
printer.print_file(input, &config.pager)?;
cli:
client, err := gh.RESTClient(nil)
if err != nil {
return err
}
repo, err := api.CurrentRepository()
Delta focuses on efficient diff viewing and syntax highlighting, while cli provides a broader set of GitHub-related functionalities. Delta is more suitable for users primarily interested in enhancing their diff viewing experience, whereas cli is ideal for those who frequently interact with GitHub's various features through the command line.
It's Magit! A Git Porcelain inside Emacs.
Pros of Magit
- Comprehensive Git interface within Emacs, offering a full suite of Git operations
- Powerful staging and committing features with fine-grained control
- Extensive documentation and active community support
Cons of Magit
- Steep learning curve for users unfamiliar with Emacs
- Limited to Emacs environment, not usable as a standalone tool
- May be overkill for users who only need basic Git functionality
Code Comparison
Magit (Emacs Lisp):
(magit-stage-file "file.txt")
(magit-commit-create)
(magit-push-current-to-pushremote)
Delta (Rust):
// Delta is primarily used as a command-line tool
// and doesn't have a direct code comparison
Key Differences
- Magit is a full-featured Git interface within Emacs, while Delta is a syntax highlighter for Git and diff output
- Magit offers interactive staging and committing, whereas Delta focuses on enhancing the display of Git output
- Magit requires Emacs, while Delta can be used with any Git setup on the command line
Use Cases
- Magit: Ideal for Emacs users who want deep Git integration and powerful version control features
- Delta: Perfect for developers who want improved readability of Git and diff output in their terminal
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Get Started
Install it (the package is called "git-delta" in most package managers, but the executable is just delta
) and add this to your ~/.gitconfig
:
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # use n and N to move between diff sections
# delta detects terminal colors automatically; set one of these to disable auto-detection
# dark = true
# light = true
[merge]
conflictstyle = diff3
[diff]
colorMoved = default
Delta has many features and is very customizable; please see the user manual.
Features
- Language syntax highlighting with the same syntax-highlighting themes as bat
- Word-level diff highlighting using a Levenshtein edit inference algorithm
- Side-by-side view with line-wrapping
- Line numbering
n
andN
keybindings to move between files in large diffs, and between diffs inlog -p
views (--navigate
)- Improved merge conflict display
- Improved
git blame
display (syntax highlighting;--hyperlinks
formats commits as links to hosting provider etc. Supported hosting providers are: GitHub, GitLab, SourceHut, Codeberg) - Syntax-highlights grep output from
rg
,git grep
,grep
, etc - Support for Git's
--color-moved
feature. - Code can be copied directly from the diff (
-/+
markers are removed by default). diff-highlight
anddiff-so-fancy
emulation modes- Commit hashes can be formatted as terminal hyperlinks to the hosting provider page (
--hyperlinks
). File paths can also be formatted as hyperlinks for opening in your OS. - Stylable box/line decorations to draw attention to commit, file and hunk header sections.
- Style strings (foreground color, background color, font attributes) are supported for >20 stylable elements, using the same color/style language as git
- Handles traditional unified diff output in addition to git output
- Automatic detection of light/dark terminal background
A syntax-highlighting pager for git, diff, and grep output
Code evolves, and we all spend time studying diffs. Delta aims to make this both efficient and enjoyable: it allows you to make extensive changes to the layout and styling of diffs, as well as allowing you to stay arbitrarily close to the default git/diff output.
delta with line-numbers activated
|
delta with side-by-side and line-numbers activated
|
Here's what git show
can look like with git configured to use delta:
"Dracula" theme | "GitHub" theme |
Syntax-highlighting themes
All the syntax-highlighting color themes that are available with bat are available with delta:
delta --show-syntax-themes --dark
|
delta --show-syntax-themes --light
|
Side-by-side view
[delta]
side-by-side = true
By default, side-by-side view has line-numbers activated, and has syntax highlighting in both the left and right panels: [config]
Side-by-side view wraps long lines automatically:
Line numbers
[delta]
line-numbers = true
Merge conflicts
Git blame
Ripgrep, git grep
Installation and usage
Please see the user manual and delta --help
.
Maintainers
Top Related Projects
Good-lookin' diffs. Actually… nah… The best-lookin' diffs. :tada:
simple terminal UI for git commands
Text-mode interface for git
GitHub’s official command line tool
It's Magit! A Git Porcelain inside Emacs.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot