gitalias

Combined git `continue` command


Variously I might need to run:

In each case, my command line is reminding me that I'm mid-(rebase/cp/revert) so it's clear to me that it knows which one is active.

So it feels like there could conceptually be a command git continue which will continue whichever operation is currently active, thus saving some tedious typing?


Solution

  • In addition to @alfunx's answer, I might suggest this change:

    Instead of doing repo_path=$(git rev-parse --git-dir 2>/dev/null) so git's return code & log is ignored, I changed the script to this:

    #!/usr/bin/env bash
    
    repo_path=$(git rev-parse --git-dir)
    status=$?
    
    if [ $status -ne 0 ]; then
        exit $status
    fi
    
    if [ -d "${repo_path}/rebase-merge" ]; then
        exec git rebase --continue
    elif [ -d "${repo_path}/rebase-apply" ]; then
        exec git rebase --continue
    elif [ -f "${repo_path}/MERGE_HEAD" ]; then
        exec git merge --continue
    elif [ -f "${repo_path}/CHERRY_PICK_HEAD" ]; then
        exec git cherry-pick --continue
    elif [ -f "${repo_path}/REVERT_HEAD" ]; then
        exec git revert --continue
    else
        echo "No something in progress?"
    fi
    

    Now this script...

    1. returns corresponding exit code(for example, 128 for not being a git repository, etc) and error message from git binary itself(like fatal: not a git repository (or any of the parent directories): .git)
    2. echo "No something in progress?" if there was nothing going on.