#!/bin/bash

# Abort a rebase, merge, `am`, a cherry-pick or a revert, depending on the situation.

if [[ -e .git/CHERRY_PICK_HEAD ]] ; then
    exec git cherry-pick --abort "$@"
elif [[ -e .git/REVERT_HEAD ]] ; then
    exec git revert --abort "$@"
elif [[ -e .git/rebase-apply/applying ]] ; then
    exec git am --abort "$@"
elif [[ -e .git/rebase-apply ]] ; then
    exec git rebase --abort "$@"
elif [[ -e .git/rebase-merge ]] ; then
    exec git rebase --abort "$@"
elif [[ -e .git/MERGE_MODE ]] ; then
    exec git merge --abort "$@"
else
    echo git-abort: unknown state
    exit -1
fi