I needed a bash script to capture some repository info from a different folder in variables. Dr. Google was helpful again and so I came up with this example script.

#!/bin/bash

dir=/www/lxHive

if [ -d "$dir" ]; then
    branch=$(git --git-dir "$dir/.git" branch | sed -n -e 's/^\* \(.*\)/\1/p')
    status=$(git --git-dir "$dir/.git" --work-tree=$dir status)
else
    branch='.git dir not found'
    status=''
fi

echo
echo "* Folder: $dir/.git"
echo "* Branch: $branch"
echo "* Status:"
echo
echo "$status"
echo

Save as test.sh and make it executable.

Output:

$ sh test.sh

* Folder: /www/lxHive/.git
* Branch: development
* Status:

# On branch development
nothing to commit (working directory clean)

Notes:

  • This does NOT work with relative paths
  • Most git commands require tho specify the tree with the --worktree argument or they output rubbish (git < 1.8). See stackoverflow link below.
  • Wrap multiline command variables in quotes for better output

Links: