Skip to main content

Probably the sharpest git repository organizer & rebase/merge workflow automation tool you've ever seen

Project description

git-machete

Join the chat at https://gitter.im/VirtusLab/git-machete TravisCI build status PyPI package Snap Snap build status

git machete is a versatile tool for organizing your git repo:

git machete discover suggests a layout of branches (which branch is derived/forked off which),

git machete status shows whether branches are in sync with their parent branch (via green/red edges) and their remote tracking branch,

git machete traverse semi-automatically traverses the branches, helping you effortlessly rebase, merge, push and pull.

git machete discover, status & traverse

A port to an IntelliJ plugin is under development, see VirtusLab/git-machete-intellij-plugin.

Install

We suggest a couple of alternative ways of installation.

Bash and zsh completion scripts are provided in completion/ directory, see wiki for their installation instructions.

git-machete works under both Python 2.7 and Python 3.x.

Using Homebrew (macOS)

brew tap VirtusLab/git-machete
brew install git-machete

Using Snappy (most Linux distributions)

Tip: check the guide on installing snapd if you don't have Snap support set up yet in your system.

sudo snap install --classic git-machete

It can also be installed via Ubuntu Software (simply search for git-machete).

Note: classic confinement is necessary to ensure access to the editor installed in the system (to edit e.g. .git/machete file or rebase TODO list).

Using PPA (Ubuntu)

Tip: run sudo apt-get install -y software-properties-common first if add-apt-repository is not available on your system.

sudo add-apt-repository ppa:virtuslab/git-machete
sudo apt-get update
sudo apt-get install -y python3-git-machete

Using rpm (Fedora/RHEL/CentOS/openSUSE...)

Download the rpm package from the latest release and install either by opening it in your desktop environment or with rpm -i git-machete-*.noarch.rpm.

Using AUR (Arch Linux)

Install the AUR package git-machete using an AUR helper of your preference.

Using Nix (macOS & most Linux distributions)

On macOS and most Linux distributions, you can install via Nix:

nix-channel --add https://nixos.org/channels/nixos-unstable unstable  # if you haven't set up any channels yet
nix-env -i git-machete

Using pip with sudo (system-wide install)

You need to have Python and pip installed from system packages.

sudo -H pip install git-machete

Tip: pass an extra -U flag to pip install to upgrade an already installed version.

Using pip without sudo (user-wide install)

You need to have Python and pip installed from system packages.

pip install --user git-machete

Please verify that your PATH variable has ${HOME}/.local/bin/ included.

Tip: pass an extra -U flag to pip install to upgrade an already installed version.

Quick start

cd your-repo/
git machete discover
  # (see and possibly edit the suggested layout of branches - branch layout is always kept as text file .git/machete)
git machete traverse --fetch --start-from=first-root
  # (put each branch one by one in sync with its parent and remote counterpart)

Git compatibility

git-machete (since version 2.13.0) is compatible with git >= 1.7.10.

Reference

See git machete help and git machete help <command> for reference.

Take a look at https://medium.com/virtuslab/make-your-way-through-the-git-rebase-jungle-with-git-machete-e2ed4dbacd02 for a guide on how to use the tool.

The more advanced features like automated traversal, upstream inference and tree discovery are described in the second part of the series: https://medium.com/virtuslab/git-machete-strikes-again-traverse-the-git-rebase-jungle-even-faster-with-v2-0-f43ebaf8abb0.

Contributions

Contributions are welcome! See contributing guidelines for details. Help would be especially appreciated with Python code style and refactoring - so far more focus has been put on features, documentation and automating the distribution.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git-machete-2.15.2.tar.gz (49.4 kB view hashes)

Uploaded Source

Built Distribution

git_machete-2.15.2-py2.py3-none-any.whl (43.8 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page