Some bash functions for git
source link: https://www.phillip-kruger.com/post/some_bash_functions_for_git/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Here some git related functions in my .bachrc
. Is mostly a backup for me, but it might also be useful for someone else.
Cloning a git repo
Because I usually clone repos from my github account, this is a shortcut that allows me to just type clone *repo_name*
and it will create the URL.
function clone {
if [ $# -eq 0 ]; then
echo "Please enter repo name or full url:";
read repo;
clone $repo;
elif [[ $1 == --help ]] || [[ $1 == --h ]] || [[ $1 == --? ]]; then
echo "This will clone a git repo.";
echo "";
echo "Option 1: You can just provide the name, eg:";
echo "$ clone membership";
echo "This will do: git clone https://github.com/phillip-kruger/membership.git";
echo "";
echo "Option 2: Provide the full URL";
echo "$ clone https://github.com/smallrye/smallrye-rest-client.git";
echo "This will do: git clone https://github.com/smallrye/smallrye-rest-client.git";
else
if [[ $1 == https://* ]] || [[ $1 == git://* ]] || [[ $1 == ssh://* ]] ; then
URL=$1;
else
URL='https://github.com/phillip-kruger/'$1'.git';
fi
echo git clone "$URL";
git clone "$URL";
fi
}
export -f clone
Usage:
clone *reponame*
- this will go to my github account
clone *url*
- clone the repo at the url
clone
- will ask for the repo name or url
Syncing your fork to upstream
If you contribute to projects, and you are working against your own fork, this is a handy way to keep you fork in sync with changes in the upstream master.
function sync {
if git remote -v | grep -q 'upstream'; then
echo "upstream exist";
else
echo "Please enter the upstream git url:";
read url;
git remote add upstream "$url"
fi
git remote -v
git fetch upstream
git pull upstream master
git checkout master
git rebase upstream/master
}
export -f sync
Commit
Normal commit
, but adding -s
to include your signature.
function commit {
if [ $# -eq 0 ]; then
echo "Please enter a commit message:";
read msg;
commit "$msg";
elif [[ $1 == --help ]] || [[ $1 == --h ]] || [[ $1 == --? ]]; then
echo "This will commit changes to a local git repo, eg:";
echo "$ commit 'some changes made'";
echo "This will do: git commit -s -m 'some changes made'";
else
echo git commit -s -a -m "$1"
git commit -s -a -m "$1";
fi
}
export -f commit
Rebase a PR to upstream
When you did a PR but need to rebase:
function rebase {
git fetch upstream
git rebase upstream/master
git push -f
}
export -f rebase
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK