git-cola: The extremely caffeinated Git GUI

git-cola is a robust Git GUI with a slick and intuitive consumer interface.

Copyright (C) 2007-2020, David Aguilar and contributors

This program is free software program: you'll be able to redistribute it and/or modify
it underneath the phrases of the GNU Normal Public License as printed by
the Free Software program Basis, both model 2 of the License, or
(at your possibility) any later model.

This program is distributed within the hope that will probably be helpful,
however WITHOUT ANY WARRANTY; with out even the implied guarantee of
GNU Normal Public License for extra particulars.

You must have obtained a duplicate of the GNU Normal Public License
together with this program.  If not, see <>.


Screenshots can be found on the
git-cola screenshots web page.


apt set up git-cola

New releases can be found on the
git-cola obtain web page.


git clone git://

git-cola on github

git-cola google group



  • git 1.6.3 or newer.

  • Python 2.6 or newer (Python 2+3 suitable).

  • QtPy 1.1.0 or newer.

  • argparse 1.1 or newer.
    argparse is a part of the stdlib in Python 2.7; set up argparse individually if
    you might be operating on Python 2.6.

  • Sphinx for constructing the documentation.

git-cola makes use of QtPy, so you’ll be able to select between PyQt4, PyQt5, and
PySide by setting the QT_API atmosphere variable to pyqt4, pyqt5 or
pyside as desired. qtpy defaults to pyqt5 and falls again to pyqt4
if pyqt5 will not be put in.

Any of the next Python Qt libraries have to be put in:

  • PyQt4
    4.6 or newer

  • PyQt5
    5.2 or newer

  • PySide
    1.1.0 or newer

Set QT_API=pyqt4 in your atmosphere when you have each
variations of PyQt put in and wish to make sure that PyQt4 is used.


git-cola permits extra options when the next
Python modules are put in.

send2trash permits cross-platform
“Send to Trash” performance.



You need not set up git-cola to run it.
Working git-cola from its supply tree is the best
technique to attempt the newest model.

git clone git://
cd git-cola

You too can begin cola as a Python module if Python can discover it.

cd git-cola
python -m cola
python -m cola dag

Having git-cola’s bin/ listing in your path means that you can run
git cola like an everyday built-in Git command:

# Substitute "$PWD/bin" with the trail to git-cola's bin/ listing
export PATH

git cola
git dag

The directions beneath assume that you’ve git-cola current in your
$PATH. Substitute “git cola” with “./bin/git-cola” as wanted if you would like to
simply run it in-place.


  • HTML documentation

  • git-cola handbook

  • git-dag handbook

  • Keyboard shortcuts

  • Contributing pointers


Usually you’ll be able to simply do “make install” to put in git-cola
in your $HOME listing ($HOME/bin, $HOME/share, and so forth).
If you wish to do a worldwide set up you are able to do

The platform-specific set up strategies beneath use the native
bundle supervisor. You must use certainly one of these so that every one of git-cola’s
dependencies are put in.

Distutils is utilized by the Makefile through to put in git-cola and
its launcher scripts. distutils replaces the #!/usr/bin/env python traces in
scripts with the total path to python at construct time, which might be undesirable
when the runtime python will not be the identical because the build-time python. To disable
the alternative of the #!/usr/bin/env python traces, cross USE_ENV_PYTHON=1
to make.


Linux is it! Your distro has in all probability already packaged git-cola.
If not, please file a bug in opposition to your distribution 😉


Accessible within the AUR.

debian, ubuntu

apt set up git-cola


dnf set up git-cola


emerge git-cola

opensuse, sle

zypper set up git-cola


Accessible in


# set up from official binary packages
pkg set up -r FreeBSD devel/git-cola
# construct from supply
cd /usr/ports/devel/git-cola && make clear set up


See right here for the
variations which are obtainable in Ubuntu’s repositories.

There was a PPA by @pavreh
but it surely has not been up to date for some time.


Homebrew is the best technique to set up
git-cola’s Qt4 and PyQt4 dependencies. We are going to use Homebrew to put in
the git-cola recipe, however construct our personal .app bundle from supply.

Sphinx is used to construct the

brew set up sphinx-doc
brew set up git-cola

As soon as brew has put in git-cola you’ll be able to:

  1. Clone git-cola

    git clone git:// && cd git-cola

  2. Construct the software bundle

        PYTHON=$(brew --prefix python3)/bin/python3 
        PYTHON_CONFIG=$(brew --prefix python3)/bin/python3-config 
        SPHINXBUILD=$(brew --prefix sphinx-doc)/bin/sphinx-build

  3. Copy it to /Functions

    rm -fr /Functions/ && cp -r /Functions

Newer variations of Homebrew set up their very own python3 set up and
present the PyQt5 modules for python3 solely. It’s a must to use
python3 ./bin/git-cola when operating from the supply tree.


When you improve utilizing brew then it is strongly recommended that you simply re-install
git-cola’s dependencies when upgrading. Re-installing ensures that the
Python modules supplied by Homebrew shall be correctly arrange.

A fast repair when upgrading to newer variations of XCode or macOS is to
reinstall pyqt5.

brew reinstall pyqt@5

You might also must relink your pyqt set up:

brew hyperlink pyqt@5

That is required when upgrading to a contemporary (post-10.11 El Capitan) Mac OS X.
Homebrew now bundles its personal Python3 set up as an alternative of utilizing the
system-provided default Python.

If the “brew reinstall” command above doesn’t work then re-installing from
scratch utilizing the directions beneath ought to get issues again in form.

# replace homebrew
brew replace

# uninstall git-cola and its dependencies
brew uninstall git-cola
brew uninstall pyqt5
brew uninstall sip

# re-install git-cola and its dependencies
brew set up git-cola


IMPORTANT In case you have a 64-bit machine, set up the 64-bit variations solely.
Don’t combine 32-bit and 64-bit variations.

Obtain and set up the next:

  • Git for Home windows

  • Git Cola

As soon as these are put in you’ll be able to run Git Cola from the Begin menu.

See “WINDOWS (continued)” beneath for extra particulars.


git cola ships with an interactive rebase editor known as git-cola-sequence-editor.
git-cola-sequence-editor is used to reorder and select commits when rebasing.
Begin an interactive rebase by the “Rebase” menu, or by the
git cola rebase sub-command to make use of the git-cola-sequence-editor:

git cola rebase origin/primary

git-cola-sequence-editor might be launched independently of git cola by telling
git rebase to make use of it as its editor by the GIT_SEQUENCE_EDITOR
enviironment variable:

env GIT_SEQUENCE_EDITOR="$PWD/bin/git-cola-sequence-editor" 
git rebase -i origin/primary


The git-cola command exposes varied sub-commands that can help you rapidly
launch instruments which are obtainable from inside the git-cola interface.
For instance, ./bin/git-cola discover launches the file finder,
and ./bin/git-cola grep launches the grep software.

See git cola --help-commands for the total checklist of instructions.

$ git cola --help-commands
utilization: git-cola [-h]


legitimate instructions:

    cola                begin git-cola
    am                  apply patches utilizing "git am"
    archive             save an archive
    department              create a department
    browse              browse repository
    config              edit configuration
    dag                 begin git-dag
    diff                view diffs
    fetch               fetch remotes
    discover                discover information
    grep                grep supply
    merge               merge branches
    pull                pull distant branches
    push                push distant branches
    rebase              interactive rebase
    distant              edit remotes
    search              search commits
    stash               stash and unstash adjustments
    tag                 create tags
    model             print the model


The next instructions needs to be run throughout growth:

# Run the unit assessments
$ make check

# Run assessments and longer-running pylint and flake8 checks
$ make test

# Run assessments in opposition to a number of python interpreters utilizing tox
$ make tox

The check suite might be discovered within the check listing.

The assessments are set as much as run routinely when code is pushed utilizing
Travis CI.
Checkout the Travis config file for extra particulars.

Auto-format po/*.po information earlier than committing when updating translations:

$ make po

When submitting patches, seek the advice of the
contributing pointers.


For Linux/Unix-like environments with symlinks, a simple method to make use of the newest
git cola is to maintain a clone of the repository and symlink it into your
~/bin listing. If $HOME/bin will not be already in your $PATH you’ll be able to
add these two traces to the underside of your ~/.bashrc to make the linked
instruments obtainable.

    export PATH

Then, set up git-cola by linking it into your ~/bin:

    mkdir -p ~/src ~/bin
    git clone git:// ~/src/git-cola
    (cd ~/bin &&
     ln -s ../src/git-cola/bin/git-cola &&
     ln -s ../src/git-cola/bin/git-dag)

You must then get the newest git cola in your shell.


Git Cola installs its modules into the default Python site-packages listing
(eg. lib/python2.7/site-packages), and in its personal non-public share/git-cola/lib
space by default. The non-public modules are redundant and never wanted when cola’s modules
have been put in into the site-packages listing.

Git Cola will desire its non-public modules when the share/git-cola/lib listing
exists, however they aren’t required to exist. This listing is optionally available, and may
be safely eliminated if the cola modules have been put in into site-pacakges
and are importable by the default sys.path.

To suppress the set up of the non-public (redundant) share/git-cola/lib/cola
bundle, specify make NO_PRIVATE_LIBS=1 ... when invoking make,
or export GIT_COLA_NO_PRIVATE_LIBS=1 into the construct enviornment.

make NO_PRIVATE_LIBS=1 ...

Git Cola installs a vendored copy of its QtPy dependency by default.
Git Cola gives a duplicate of the qtpy module in its non-public modules space
when putting in Git Cola so that you’re not required to put in QtPy individually.
If you would like to supply your individual qtpy module, for instance from the python-qtpy
Debian bundle, then specify make NO_VENDOR_LIBS=1 ... when invoking make,
or export GIT_COLA_NO_VENDOR_LIBS=1 into the construct atmosphere.

make NO_VENDOR_LIBS=1 ...

Python3 customers on debian might want to set up python3-distutils so as
to run the Makefile’s set up steps. distutils is a Python construct
requirement, however not wanted at runtime.

WINDOWS (continued)


In an effort to develop Git Cola on Home windows you will want to put in
Python3 and pip. Set up PyQt5 utilizing pip set up PyQt5
to make the PyQt5 bindings obtainable to Python.

As soon as these are put in you need to use python.exe to run
immediately from the supply tree. For instance, from a Git Bash terminal:

/c/Python36/python.exe ./bin/git-cola

A number of Python variations

In case you have a number of variations of Python put in, the contrib/win32/cola
launcher script would possibly select the newer model as an alternative of the python
that has PyQt put in. In an effort to resolve this, you’ll be able to set the
cola.pythonlocation git configuration variable to inform cola the place to
discover python. For instance:

git config --global cola.pythonlocation /c/Python36


Home windows installers are constructed utilizing

  • Pynsist.

  • NSIS can be wanted.

To construct the installer utilizing Pynsist run:


This can generate an installer in construct/nsis/.


You could must configure your historical past browser if you’re upgrading from an
older model of Git Cola.

gitk was initially the default historical past browser, however gitk can’t be
launched as-is on Home windows as a result of gitk is a shell script.

If you’re configured to make use of gitk, then change your configuration to
undergo Git’s sh.exe on Home windows. Equally, we should undergo
python.exe if we wish to use git-dag.

If you wish to use gitk as your historical past browser open the
Preferences display and alter the historical past browser command to:

"C:/Program Files/Git/bin/sh.exe" --login -i C:/Git/bin/gitk

git-dag turned the default historical past browser on Home windows in v2.3, so new
customers mustn’t must configure something.

Leave a Reply

Your email address will not be published.