Skip to content

Instantly share code, notes, and snippets.

@19317362
Forked from tstone2077/git-cloneall
Created January 5, 2021 22:14
Show Gist options
  • Save 19317362/c7394f5dd3b72306c784acc174fe9889 to your computer and use it in GitHub Desktop.
Save 19317362/c7394f5dd3b72306c784acc174fe9889 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment