Interfaces, frontends, and tools - Git SCM Wiki (original) (raw)

OBSOLETE CONTENT

This wiki has been archived and the content is no longer updated. Please visit git-scm.com/doc for up-to-date documentation.

Contents


Frontends and Interfaces

Version Control Interface layers

git-wizard

git wizard - handy wrapper script

git-m

git-m is multiple git replication and management utility. It allows in one line command replicate tree of git repositories to another host.

Zit

Zit by Giuseppe Bilotta is the Git-based single file content tracker; it uses Git to independently track single files within a directory; sort of like what RCS does, but with the power, flexibility, elegance and ease of use of Git. Still in alpha stage.

Gitless

Gitless is an experiment to see what happens if you put a simple veneer on Git, and change its underlying concepts.

Historical

Interfaces to other programming languages

C

Perl

Python

Ruby

Objective-C

Java

PHP

.NET and Mono

Haskell

JavaScript

Patch-management Interface layers

StGIT (Stacked Git)

Guilt (formerly Git Queues (gq))

cj-git-patchtool

TopGit

Patchy Git (pg), deprecated

Graphical Interfaces

Graphical Interfaces - Proprietary

Vershd

GitKraken

gitSafe

SmartGit

SourceTree

Agit (Android)

Working Copy (iOS)

Tower

GitVine

GitHub Desktop

Graphical Interfaces - FLOSS

Git Watcher

Cocoon

gitk (distributed with Git)

git-gui (distributed with Git)

tig (Text-mode Interface for Git)

QGit

CodeReview

Giggle

gitview (in `contrib/`)

git-forest

A screenshot may be found at git-forest.png. Written in Perl by Jan Engelhardt.
See also: text-based tree visualizer announcement on the Git mailing list.

GitForce

Qct

git-cola

GitX

Git Extensions

TortoiseGit

Dreamweaver GIT (GITWeaver Dreamweaver Tortoise Extension)

git-cheetah

gitg

git-age

StupidGit

GitUI

Summary (feature matrix)

| | written in | UI toolkit | Open Source | last activity | tree view | history viewer | history search | (un)stage files | partial staging | undo diff fragments | checkout | cherry-pick | committing | remote features | stash | format patch | interfaces w/ external diff viewers | diff +/- highlighting | compare commits | merge features | inotify support | interactive rebase | apply patches via drag'n'drop | i18n | Screenshot | | | ---------------------------------------------------------------------------------------- | ---------- | ----------- | ------------- | --------- | -------------- | -------------- | --------------- | --------------- | ------------------- | -------- | ----------- | ---------- | --------------- | ----- | ------------ | ----------------------------------- | --------------------- | --------------- | -------------- | ------------------------------------------------------------------------------- | ------------------ | ----------------------------- | ---- | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | | gitk | Tcl | Tk | yes | 2008 | X | X | X | | | | X | X | | | | X | | X | X | | | | | de, es, it, sv | X | | git-gui | Tcl | Tk | yes | 2008 | ext | | | X | X | | X | | X | X | | | | X | | X | | | | de, fr, hu, it, ja, ru, sv, zh_cn | X | | tig | C | curses | yes | 2008 | X | X | X | X | | | X | X | X | | | | | X | X | | | ? | ? | | X | | QGit | C++ | Qt | yes | 2008 | X | X | X | | | | X | X | X | | | X | | X | X | | | ? | ? | | X | | Giggle | C | GTK+ | ? | 2009 | X | X | X | | | | | | X | X | | X | | X | | | | ? | ? | ca, de, en_GB, es, fr, ja, pl, sv, vi | X | | gitview | Python | GTK+ | yes | 2006 | X | X | | | | | | | | | | | | X | | | | ? | ? | | X | | git-forest | Perl | - | yes | 2008 | X | X | | | | | | | | | | | | | | | | ? | ? | | X | | gct | Python | Qt | ? | 2007 | | | | | | | | | X | | | | | | | | | ? | ? | | (gct) | | pmpu | Python | Qt4 | ? | 2008 | | X | | | | | | | X | X | | | | | | | | ? | ? | | X | | Qct | Python | Qt | yes | 2008 | | | | | | | | | X | | | | | X | | | | ? | ? | | X | | git-cola | Python | Qt4 | yes | 2011 | ext | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | ? | X | partial de, fr, hu, it, ja, ru, sv, zh_cn | X | | GitNub | ObjC, Ruby | Cocoa | ? | 2008 | X | X | X | | | | | | | | | | | X | | | | ? | ? | | X | | GitX | ObjC | Cocoa | yes | 2008 | X | X | X | X | X | | | | X | | | X | | X | | | | ? | ? | | X | | Pyrite | Python | ? | ? | 2008 | | ? | ? | ? | | | ? | ? | ? | ? | ? | ? | | | ? | ? | | ? | ? | | (Pyrite) | | gitSafe | C++ | MFC | no | 2008 | | X | | | | | X | | X | | X | | | | X | ? | | ? | ? | | X | | teamGit | C++ | Qt4 | ? | 2008 | | X | X | X | X | | X | X | X | some | | | | X | | | | X | X | | X | | Git Extensions | C#, C++ | - | yes | 2011 | X | X | X | X | X | | X | X | X | X | X | X | X | X | X | X | | X | | | X | | TortoiseGit | C++ | MFC | yes | 2017 | Explore | X | X | X | X | | X | X | X | X | X | X | X | X | X | X | | X | | | X | | gitg | C | GTK+ | yes | 2010 | X | X | X | X | X | | X | X | X | some | X | X | | X | | X | | | | | X | | SmartGit | Java | Swing | ? | 2009 | X | X | X | X | X | | X | X | X | some | X | | X | | X | X | | | | | X | | StupidGit | Python | wxWidgets | ? | 2009 | | X | | X | | | X | X | X | | X | | X | X | | X | | | | | X | | SourceTree | ObjC, C++ | Cocoa | no | 2015 | X | X | X | X | X | X | X | | X | X | | X | X | X | | X | | | X | | X | | Agit | Java | Android | yes | 2011 | | X | | | | | X | | | X | | | | X | X | | | | | | X | | Working Copy | ObjC | UIKit | no | 2016 | | X | | | | | X | | X | | | | | X | | X | | | | | X | | GitUI | Rust | crossterm | yes | 2020 | X | X | | X | X | X | | | X | | X | | | X | | | | | | | X | | GitVine | Python | Qt | no | 2021 | X | X | X | X | X | X | | | X | some | | | X | X | X | | | | | | X |

Deprecated and stalled projects

Web Interfaces - need to move these

Sprout (formerly GitMac) (Mac OS X)

Web Interfaces

GitLab

gitweb (distributed with Git)

GitList

P3X Enhanced GitList

klaus

WebGit .NET

ginatra

GitPHP

viewgit

cgit

gogs

Gitalist

GitStat

GitStats

Git Treemap

pitweb

PyjamasGitWeb

Git Enablement Server (G.E.S.)

git2html

git webcommit

Grack

Git-Webby (deprecated)

pgkiss

ungit

Versioning for Magento 1

Historical

git-php:

Access control / Project hosting

gitosis (unmaintained ?)

SCuMD

ssh_acl

gitolite

Girocco

SCM-Manager

SCM-Manager Universe

Gitblit

(Java, requires Java 6 Runtime Environment (JRE or JDK) or up)

GitBucket

Filesystem interfaces

git fs

figfs

GitFS (from mitch at sfgoth.com (Mitchell Blank Jr))

GitFS (Python)

Inferno filesystem translator

git-fuse-perl

gitfuse

git-fs

gitfs

Tools

Editors and IDE integration

Emacs integration

Eclipse plugin (EGit)

JetBrains IDEs: IntelliJ IDEA 9.0 / PyCharm 1.0 / RubyMine / etc.

Git4Idea

KDevelop

NetBeans plugin

Padre

PIDA

Sublime

TextMate

Vim

Visual Studio

Merge tools

imerge

Diffuse

dirdiff

Meld

Kdiff3

Code Compare

Per-file merge drivers

git-merge-changelog

Interaction with other Revision Control Systems

You may find the DVCS Migration Guide a useful resource if you are attempting to migrate a project history to Git.

Multiple Systems

Built-in import (built in)

reposurgeon

Tailor

CVS

git-cvsexportcommit (built in)

git-cvsserver (built in)

cvsps

cvs-fast-export

cvs2git

fromcvs/togit

gc-utils

Bigitr

CvsntGitImporter

git-cvs

Subversion

When choosing git migration tools you need to clearly grasp the difference between an gateway (supporting live operation on a Subversion repository through git) and an importer (designed to move an entire Subversion history to git). The programs in this section were usually designed for one of these purposes and may have serious hidden flaws if used for the other.

Importers and gateways are listed first, then exporters, then auxiliary tools. See git-svn on how to use Git as an Subversion client. Here is a feature matrix of the production-quality importers:

| | reposurgeon | git-svn | svn2git | SubGit | agito | | | ---------------------------- | --------------- | --------- | -------------------------- | -------------- | ------------ | | role? | importer | gateway | importer | gateway | importer | | handles branching? | yes | yes | yes | yes | yes | | makes annotated tags? | yes | no | yes | yes | yes | | splits mixed-branch commits? | yes | no | no | yes | yes | | makes .gitignore files? | yes | no | no | yes | yes | | documentation | excellent | good | good | excellent | passable | | written in | Go | Perl | Ruby | Java | Python | | last activity? | 2020 | 2012 | 2012 | 2013 | 2012 | | maintainer | Eric S. Raymond | Eric Wong | James Coglin, Kevin Menard | TMate Software | Simon Howard |

reposurgeon

git-svn (built in)

svn2git (Ruby)

SubGit

agito

git-svnconvert

svn-all-fast-export

git-rails-plugins

git2svn (Perl/Bash)

git2svn (fast-export)

git2svn.pl (yet another one)

svnExport.pl (one-way, no rebase)

svneverever

git-rails-plugins

git-svnsync

Mercurial

Another list of Mercurial related tools is maintained here.

hg-to-git

hg-fast-export

git-hg

git-remote-hg

git-cinnabar

Darcs

darcs-to-git

Darcs-Git

darcs-fast-export

darcs2git

Bazaar

Git-bzr

bzr-fast-export

BzrToGit

git-remote-bzr

Perforce

git-p4 (built in)

git-p4import

git-p4raw

Monotone

mtn2git

ClearCase

git-cc

CC2GIT ClearCase GIT Bridge (Clearvision)

git-ucmimport (IBM Rational ClearCase)

Others

quilt2git / git2quilt

SCCS import

rcs-fast-export

rcs-fast-import

rpm2git

vss2git (Visual Source Safe to Git)

vss2git (Visual SourceSafe to GIT or SVN)

tfs2git (Team Foundation Server to Git)

git-tfs (Team Foundation Server bridge)

SRC

Git-Mediawiki

ldap-git-backup

BitKeeper

Hooks

Better Commit Policy

git-notify

git-commit-notifier

git-multimail

archive-tag

git-blacklist

Hooks for integration with IBM Rational Team Concert

CIAbot

Note: The CIA service died in September 2012 and is unlikely to be resurrected. See irker, below, for its replacement.

CIA is a system for tracking open-source project commits in real-time. It needs a script installed as a post-commit or update hook to send Git log summary messages to the CIA server,

The Version 3 scripts are part of Git contrib/ as of 2010-04-02.

The advantage of the version 3 scripts are that they are a full rewrite in Python, but they force you to include a URL in the IRC output, optionnally wrapped with tinyurl, which some people may not want.

The advantage of the version 2 script is that it does not talk to tinyurl (but they don't support gitweb links)

irker

irker is a lightweight, decentralized replacement for the CIA service. It consists of two parts: a repository hook script, and a small service daemon that relays notifications to IRC servers. Unlike CIA, it doesn't have a single point of failure at a central server; rather, forge sites and major development hubs are expected to run their own irker instances which are privately accessible to local repository hooks. Git is well supported.

Gitspread

Gitspread solves the problem of pushing to several remotes or mirrors over a slow connection, for example a mobile connection from a laptop. By using a hook/daemon setup on a server with a fast connection, commits and branches are automatically spread to many mirrors by pushing only once to that repository.

Source code mirrors: GitHub, Bitbucket, repo.or.cz

Wikis, blogs, etc.

ikiwiki

Gollum

wikiri

git-wiki

WiGit

Nuki

git-blog

Tekuti

Chuyen

eWiki

Pystl

gitit

Shinmun

OddmuseGit

Levitation (export Wikipedia page history into a Git repository)

Blawd

Jekyll

Sputnik

Bug/issue trackers, etc.

Review Assistant

Critic

ditz

ticgit

git-issues

cil

milli

Bugs Everywhere

SD (Simple Defects)

git-cl

Gerrit Code Review

codeBeamer Collaborative ALM Solution

BugTracker.NET

Jira Git plugin

git-bugzilla

git-bz

scm-bug

IBM Rational Team Concert

Backups, metadata, and large files

bup

git-annex

chronoversion

metastore

gitperms

etckeeper

git-cache-meta

Flashbake

SparkleShare

Persy

Subprojects or sets of repositories

These tools allow you to manage a "superproject" that consists of a set of repositories or incorporates other repositories ("subprojects") as subtrees. As applicable, they may allow you to make changes to the subprojects that are specific to the superproject, merge those changes with updates to the upstream subprojects, and send changes back to the upstream subprojects. Each tool has a brief analysis of the fundamental design choices and their implications relevant to maintaining a superproject. Someone who cares about the differences relevant to sending changes back upstream is invited to write that part!

Submodules (built in)

repo

metagit

gitslave

git-subtree (contrib)

Braid

git-subrepo

git-subhistory

Other tools

git gitlab-init

gitdiffbinstat

git-ftp

GitFTP-Deploy

git-svn-replay

https://github.com/kimmobrunfeldt/git-hours

git2cl

git status-report

git-completion.bash (in `contrib/completion`)

gitcompletion and generate-completions

Gitdm

git-hours

git-what-branch

log remapper

ArcheoloGIT

gitcharts

pepper

git-split

reposurgeon

git_fast_filter and git-rewrite-commits

Timetrack

gitco

setuptools_git

git-now

git-buildpackage

gear

0release

./release.sh

Ryppl

fedora-packager

gitbuilder

bbchop

Parabuild

Nico Schottelius scripts

William Morgan Git tools

git-central

git-diffall

git-blameall

git-edit-index

git-build

git latexdiff

git-private-push

gitwin

cwgit

See also