-
-
Save JuggoPop/10706934 to your computer and use it in GitHub Desktop.
# To Setup: | |
# 1) Save the .git-completion.bash file found here: | |
# https://github.com/git/git/blob/master/contrib/completion/git-completion.bash | |
# 2) Add the following lines to your .bash_profile, be sure to reload (for example: source ~/.bash_profile) for the changes to take effect: | |
# Git branch bash completion | |
if [ -f ~/.git-completion.bash ]; then | |
. ~/.git-completion.bash | |
# Add git completion to aliases | |
__git_complete g __git_main | |
__git_complete gc _git_checkout | |
__git_complete gm __git_merge | |
__git_complete gp _git_pull | |
fi | |
# Make sure you actually have those aliases defined, of course. | |
alias g="git" | |
alias gc="git checkout" | |
alias gm="git merge" | |
alias gp="git pull" |
Thanks for this!
Thank you!
Nice! Thanks!
Nice and clean. Tested & worked with Ubuntu 14.04
worked :)
how can i set alias like this pld = !git pull origin develop
?
@zero-t4, add alias pld="!git pull origin develop"
to your .bash_profile (or wherever you store your aliases).
Awesome! Thanks
Line 13 should be:
__git_complete gm _git_merge
One too many _ in the last part of it.
Thanks!
Yay!! Awesomenessss...
👍
Thank you!
The legend
I've got a much longer list of aliases... Perhaps this helper is useful:
gitshort() {
short=$1; shift
long=$1; shift
alias $short="git $long $@"
__git_complete $short _git_$long
}
then
gitshort gc checkout
gitshort gcb checkout -b
gitshort gm merge
gitshort gp pull
Another option: You can source
this script after your aliases are created to automatically enable autocompletion for all of them.
Like so:
curl https://gist.githubusercontent.com/raineorshine/17df90a6f80a19adc8103e12a2b43eca/raw/fc1a7f7f39fb5edb59f34850dcbca8b912b3bb34/alias_completion.sh usr/local/etc/alias_completion
echo "source /usr/local/etc/alias_completion" >> ~/.bash_profile
source ~/.bash_profile
The git-completion.bash
file already exists on your system; you do not need to download it into your home directory.
On this system (Ubuntu 18.10):
if [ -r /usr/share/bash-completion/completions/git ]
then
. /usr/share/bash-completion/completions/git
__git_complete gco _git_checkout
__git_complete gd _git_diff
fi
alias gco='git checkout'
alias gs='git status'
alias gd='git diff'
alias gf='git fetch'
alias gst='git stash'
alias gsp='git stash pop'
alias gsl='git stash list'
alias gpoh='git push origin HEAD'
alias grom='git rebase origin/main'
alias gmom='git merge origin/main'
alias gfomm='git fetch origin main:main'
alias gcam='git commit -a -m'
alias gcaa='git commit -a --amend'
alias gcm='git commit -m'
alias glog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'"
All of the common commands (the ones I alias) have only one leading underscore.