Skip to content

Instantly share code, notes, and snippets.

@tstone2077
Last active October 28, 2022 08:53
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save tstone2077/8380f7862b00b6234963 to your computer and use it in GitHub Desktop.
Save tstone2077/8380f7862b00b6234963 to your computer and use it in GitHub Desktop.
Clones as usual but creates local tracking branches for all remote branches.
#!/bin/bash
# Clones as usual but creates local tracking branches for all remote branches.
# To use, copy this file into the same directory your git binaries are (git, git-flow, git-subtree, etc)
clone_output=$((git clone "$@" ) 2>&1)
retval=$?
echo $clone_output
if [[ $retval != 0 ]] ; then
exit 1
fi
pushd $(echo $clone_output | grep 'Cloning into' | head -1 | sed 's/Cloning into .\(.*\).\.\.\..*/\1/') > /dev/null 2>&1
this_branch=$(git branch | sed 's/^..//')
for i in $(git branch -r | grep -v HEAD); do
branch=$(echo $i | perl -pe 's/^.*?\///')
# this doesn't have to be done for each branch, but that's how I did it.
remote=$(echo $i | sed 's/\/.*//')
if [[ "$this_branch" != "$branch" ]]; then
git branch -t $branch $remote/$branch
fi
done
popd > /dev/null 2>&1
@AnneTheAgile
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment