#!/bin/bash # # Checkout branche a submodule. # # Parameters BASENAME="`basename $0`" # Checkout the branch containing a commit function checkout_branch { # Check if we are in a detached HEAD if git branch | grep -q '* (HEAD detached'; then # Determine the commit we're in local commit="`git log -n 1 | head -1 | cut -d ' ' -f 2`" # Get the first remote branch that contains our commit # # In the future some criteria might be stablished to determine how to decide # if the comment is present in more than one branch. Which one to prioritize? # A topic branch in the form of "feature/"? The "develop" branch? local branch="`git branch -r --contains $commit 2> /dev/null | grep -v 'HEAD' | head -1 | sed -e 's|^[^/]*/||'`" # Checkout to the given commit if [ ! -z "$branch" ]; then git checkout $branch else echo "$BASENAME: no such branch containing dangling commit $commit" fi fi } # Dispatch checkout_branch