Git Cola is a powerful Git GUI with a slick and intuitive user interface.
git clone https://github.com/git-cola/git-cola.git
- Sphinx is used to generate the documentation.
Git Cola uses QtPy, so you can choose between PyQt6, PyQt5 and PySide2 by setting
the QT_API
environment variable to pyqt6
, pyqt5
or pyside2
as desired.
qtpy
defaults to pyqt5
and falls back to pyqt6
and pyside2
if pyqt5
is not installed.
Any of the following Python Qt libraries must be installed:
-
PyQt5 / PyQt6 5.9 or newer is required. Qt 6.2 or newer is also supported via QtPy.
-
PySide2 5.12.0 or newer.
Git Cola enables additional features when the following Python modules are installed.
Send2Trash enables cross-platform "Send to Trash" functionality. (source)
pyobjc enables macOS-specific application themes on macOS. (source)
There are several ways to install Git Cola but you do not need to "install" Git Cola in order to run it.
Git Cola is designed to run directly from its source tree. Installation is optional.
The recommended approach for running the latest Git Cola version is to install its
PyQt dependencies using your distribution's package manager and then run
./bin/git-cola
directly from source.
Git Cola works with either PyQt5 or PyQt6 because it uses the qtpy library for PyQt compatibility.
Users on newer Debian/Ubuntu version can install a single package to run from source.
sudo apt install python3-qtpy
If you are on an older version that does not have python3-qtpy
available then you can
install the following packages directly.
sudo apt install python3-pyqt5 python3-pyqt5.qtopengl python3-pyqt5.qtwebengine python3-pyqt5.qtsvg
If you'd like to use Git Cola with the newer PyQt6 ecosystem then you can install these packages instead of PyQt5.
sudo apt install python3-pyqt6 python3-pyqt6.qtsvg python3-pyqt6.qtwebengine
At this point you should be able to launch ./bin/git-cola
from the source tree and
there is nothing more to do.
The further instructions below detail how to install Git Cola from PyPI or how to install it into a location separate from the source tree.
Linux is it! Your distro has probably already packaged git-cola
.
If not, please file a bug against your distribution ;-)
Available in the AUR.
apt install git-cola
dnf install git-cola
emerge git-cola
zypper install git-cola
Available in SlackBuilds.org.
See here for the versions that are available in Ubuntu's repositories.
# Install from official binary packages
pkg install -r FreeBSD devel/git-cola
# Build from source
cd /usr/ports/devel/git-cola && make clean install
IMPORTANT: never run pip install
or garden install
outside of a
Python virtualenv or as root!
IMPORTANT: if you are on Linux distributions where PyQt6 or PyQt5 are available from your package manager then it is highly recommended to install those dependencies using your system's package manager. See the section above for details.
One way to install the latest released version is to use venv
(virtualenv) and pip
.
This installs git-cola from pypi.org.
python3 -m venv --system-site-packages env3
./env3/bin/pip install git-cola
./env3/bin/git-cola
Add the env3/bin
directory to your PATH
or symlink to bin/git-cola
from
somewhere in your PATH
such as ~/.local/bin/git-cola
, and you can launch
Git Cola like any other built-in git
command:
git cola
git dag
If you don't have PyQt installed then the easiest way to get it is to use a Python virtualenv and install Git Cola into it in "editable" mode.
This install method lets you upgrade Git Cola by running git pull
.
# Create a virtualenv called "env3" and activate it.
python3 -m venv --system-site-packages env3
# Install PyQt and (optional) extra packages to enable all features.
./env3/bin/pip install --editable '.[extras,pyqt6]'
# Run Git Cola via the "git-cola" Git subcommand.
source env3/bin/activate
git cola
If you add env3/bin
(or symlink to env3/bin/git-cola
) somewhere in your $PATH
then you can
run git cola
as if it were a builtin git
command from outside of the virtualenv
(e.g. after running "deactivate" or when opening a new shell).
Running garden -D prefix=$HOME/.local install
will install Git Cola in your
$HOME/.local
directory ($HOME/.local/bin/git-cola
, $HOME/.local/lib
, etc).
This installation method assumes that the qtpy
and PyQt*
dependencies have
been pre-installed.
The Garden recipe also supports DESTDIR
to support creating packages for Linux package
managers:
garden -D DESTDIR=/tmp/stage -D prefix=/usr/local install
If you do not have garden
available then make
can be used instead.
The Makefile
supports staged installs using the conventional
DESTDIR and
prefix
variables.
make DESTDIR=/tmp/stage prefix=/usr/local install
For most end-users we recommend using either Homebrew or installing into a Python virtualenv as described above.
You can install Git Cola from source using the same steps as above.
An easy way to install Git Cola is to use Homebrew . Use Homebrew to install the git-cola recipe:
brew install git-cola
If you install using Homebrew you can stop at this step. You don't need to clone the repo or anything.
If you have all of the dependencies installed, either via pip
or brew
then
you can build a shell git-cola.app
app bundle wrapper for use in /Applications
.
If you'd like to build a git-cola.app
bundle for /Applications
run this command:
garden macos/app
You will need to periodically rebuild the app wrapper whenever Python is upgraded.
Updating macOS can often break Homebrew-managed software.
If you upgrade your macOS version and Git Cola no longer runs then then it is recommended that you re-install Git Cola's dependencies after upgrading.
A quick fix when upgrading to newer versions of XCode or macOS is to reinstall PyQt6.
brew reinstall pyqt@6
You may also need to relink your pyqt installation:
brew link pyqt@6
This is required when upgrading to a modern (post-10.11 El Capitan) Mac OS X. Homebrew now bundles its own Python3 installation instead of using the system-provided default Python.
If the "brew reinstall" command above does not work then re-installing from scratch using the instructions below should get things back in shape.
# update homebrew
brew update
# uninstall git-cola and its dependencies
brew uninstall git-cola
brew uninstall pyqt5
brew uninstall sip
# re-install git-cola and its dependencies
brew install git-cola
IMPORTANT If you have a 64-bit machine, install the 64-bit versions only. Do not mix 32-bit and 64-bit versions.
Download and install the following:
Once these are installed you can run Git Cola from the Start menu.
See "Windows (Continued)" below for more details.
If you'd like to install Git Cola with winget run the following command:
winget install git-cola.git-cola
As there is no dependency resolution yet you have to install Git as well with:
winget install Git.Git
Git Cola ships with an interactive rebase editor called git-cola-sequence-editor
.
git-cola-sequence-editor
is used to reorder and choose commits when rebasing.
Start an interactive rebase through the "Rebase" menu, or through the
git cola rebase
sub-command to use the git-cola-sequence-editor
:
git cola rebase @{upstream}
git-cola-sequence-editor
can be launched independently of git cola by telling
git rebase
to use it as its editor through the GIT_SEQUENCE_EDITOR
environment variable:
export GIT_SEQUENCE_EDITOR="$HOME/git-cola/bin/git-cola-sequence-editor"
git rebase -i @{upstream}
Shell completion scripts are available for bash and zsh. Each script contains instructions on how to install and activate the completions.
The git-cola
command exposes various sub-commands that allow you to quickly
launch tools that are available from within the git-cola interface.
For example, git cola find
launches the file finder,
and git cola grep
launches the grep tool.
See git cola --help-commands
for the full list of commands.
$ git cola --help-commands
usage: git-cola [-h]
{cola,am,archive,branch,browse,config,
dag,diff,fetch,find,grep,merge,pull,push,
rebase,remote,search,stash,tag,version}
...
valid commands:
{cola,am,archive,branch,browse,config,
dag,diff,fetch,find,grep,merge,pull,push,
rebase,remote,search,stash,tag,version}
cola start git-cola
am apply patches using "git am"
archive save an archive
branch create a branch
browse browse repository
config edit configuration
dag start git-dag
diff view diffs
fetch fetch remotes
find find files
grep grep source
merge merge branches
pull pull remote branches
push push remote branches
rebase interactive rebase
remote edit remotes
search search commits
stash stash and unstash changes
tag create tags
version print the version
If you already have Git Cola's dependencies installed then you can
start cola
as a Python module if you have the source code available.
python -m cola
python -m cola dag
The following commands should be run during development:
# Run the unit tests
$ garden test
# Run tests and longer-running pylint checks
$ garden check
# Run tests against multiple python interpreters using tox
$ garden tox
The test suite can be found in the test directory.
Commits and pull requests are automatically tested for code quality using GitHub Actions.
Auto-format cola/i18n/*.po
files before committing when updating translations:
$ garden po
When submitting patches, consult the contributing guidelines.
Git Cola installs its modules into the default Python site-packages directory
(e.g. lib/python3.7/site-packages
) using setuptools.
While end-users can use pip install git-cola
to install Git Cola, distribution
packagers should use the garden -D prefix=/usr install
process. Git Cola's Garden
recipe wraps pip install --prefix=<prefix>
to provide a packaging-friendly
garden install
target.
Earlier versions of Git Cola may have shipped without vcruntime140.dll
and may
not run on machines that are missing this DLL.
To fix this, download the Microsoft Visual C++ 2015 Redistributable and install it
Git Cola v4.0.0 and newer include this DLL and do not require this to be installed separately.
In order to develop Git Cola on Windows you will need to install
Python3 and pip. Install PyQt5 using pip install PyQt5
to make the PyQt5 bindings available to Python.
Once these are installed you can use python.exe
to run
directly from the source tree. For example, from a Git Bash terminal:
/c/Python39/python.exe ./bin/git-cola
If you have multiple versions of Python installed, the contrib/win32/cola
launcher script might choose the newer version instead of the python
that has PyQt installed. In order to resolve this, you can set the
cola.pythonlocation
git configuration variable to tell cola where to
find python. For example:
git config --global cola.pythonlocation /c/Python39
Windows installers are built using
To build the installer using Pynsist run:
./contrib/win32/run-pynsist.sh
This will generate an installer in build/nsis/
.
You may need to configure your history browser if you are upgrading from an older version of Git Cola on Windows.
gitk
was originally the default history browser, but gitk
cannot be
launched as-is on Windows because gitk
is a shell script.
If you are configured to use gitk
, then change your configuration to
go through Git's sh.exe
on Windows. Similarly, we must go through
python.exe
if we want to use git-dag
.
If you want to use gitk as your history browser open the Preferences screen and change the history browser command to:
"C:/Program Files/Git/bin/sh.exe" --login -i C:/Git/bin/gitk
git-dag
became the default history browser on Windows in v2.3
, so new
users do not need to configure anything.