學習 git 的過程當中,想給一些 git 命令設置一些別名,這樣也能夠提升一下效率。git
由於用的是 zsh ,就在 ~/.zshrc
github
alias gst='git status' alias gcm='git commit -m ' alias gps='git push' alias glg='git log --graph'
結果在執行 gcm
的時候,運行不正確。用 alias gcm
查看該別名設置:shell
➜ ~ alias gcm gcm='git checkout master'
原來配置成了其餘命令。
可是奇怪的是,在 .zshrc
文件中並無找到相關配置。通過仔細閱讀,最終發現了下面這條語句:vim
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. plugins=(git)
原來個人 zsh 安裝了 oh-my-zsh,不知道是我本身安裝仍是默認自帶了一個 git 插件,那咱們按照註釋說明,到那個插件下看一下吧。ruby
cd ~/.oh-my-zsh/plugins/git ls README.md git.plugin.zsh
能夠看到一個 git.plugin.zsh
文件,vi 打開,看到一些 functions 和 N 多的 alias。
具體文件內容我就懶得貼出來了,若是你有興趣,終端下執行一下 alias 就列出全部可用別名,比看那個 git.plugin.zsh
文件更清楚明瞭 。
大體以下:bash
g=git ga='git add' gaa='git add --all' gapa='git add --patch' gb='git branch' gba='git branch -a' gbd='git branch -d' gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d' gbl='git blame -b -w' gbnm='git branch --no-merged' gbr='git branch --remote' gbs='git bisect' gbsb='git bisect bad' gbsg='git bisect good' gbsr='git bisect reset' gbss='git bisect start' gc='git commit -v' 'gc!'='git commit -v --amend' gca='git commit -v -a' 'gca!'='git commit -v -a --amend' gcam='git commit -a -m' 'gcan!'='git commit -v -a --no-edit --amend' 'gcans!'='git commit -v -a -s --no-edit --amend' gcb='git checkout -b' gcd='git checkout develop' gcf='git config --list' gcl='git clone --recursive' gclean='git clean -fd' gcm='git checkout master' gcmsg='git commit -m' 'gcn!'='git commit -v --no-edit --amend' gco='git checkout' gcount='git shortlog -sn' gcp='git cherry-pick' gcpa='git cherry-pick --abort' gcpc='git cherry-pick --continue' gcs='git commit -S' gd='git diff' gdca='git diff --cached' gdct='git describe --tags `git rev-list --tags --max-count=1`' gdt='git diff-tree --no-commit-id --name-only -r' gdw='git diff --word-diff' gf='git fetch' gfa='git fetch --all --prune' gfo='git fetch origin' gg='git gui citool' gga='git gui citool --amend' ggpull='git pull origin $(git_current_branch)' ggpur=ggu ggpush='git push origin $(git_current_branch)' ggsup='git branch --set-upstream-to=origin/$(git_current_branch)' ghh='git help' gignore='git update-index --assume-unchanged' gignored='git ls-files -v | grep "^[[:lower:]]"' git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk' gk='\gitk --all --branches' gke='\gitk --all $(git log -g --pretty=%h)' gl='git pull' glg='git log --stat' glgg='git log --graph' glgga='git log --graph --decorate --all' glgm='git log --graph --max-count=10' glgp='git log --stat -p' glo='git log --oneline --decorate' globurl='noglob urlglobber ' glog='git log --oneline --decorate --graph' gloga='git log --oneline --decorate --graph --all' glol='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit' glola='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit --all' glp=_git_log_prettily glum='git pull upstream master' gm='git merge' gmom='git merge origin/master' gmt='git mergetool --no-prompt' gmtvim='git mergetool --no-prompt --tool=vimdiff' gmum='git merge upstream/master' gp='git push' gpd='git push --dry-run' gpoat='git push origin --all && git push origin --tags' gpristine='git reset --hard && git clean -dfx' gpsup='git push --set-upstream origin $(git_current_branch)' gpu='git push upstream' gpv='git push -v' gr='git remote' gra='git remote add' grb='git rebase' grba='git rebase --abort' grbc='git rebase --continue' grbi='git rebase -i' grbm='git rebase master' grbs='git rebase --skip' grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}' grh='git reset HEAD' grhh='git reset HEAD --hard' grmv='git remote rename' grrm='git remote remove' grset='git remote set-url' grt='cd $(git rev-parse --show-toplevel || echo ".")' gru='git reset --' grup='git remote update' grv='git remote -v' gsb='git status -sb' gsd='git svn dcommit' gsi='git submodule init' gsps='git show --pretty=short --show-signature' gsr='git svn rebase' gss='git status -s' gst='git status' gsta='git stash save' gstaa='git stash apply' gstc='git stash clear' gstd='git stash drop' gstl='git stash list' gstp='git stash pop' gsts='git stash show --text' gsu='git submodule update' gts='git tag -s' gtv='git tag | sort -V' gunignore='git update-index --no-assume-unchanged' gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1' gup='git pull --rebase' gupv='git pull --rebase -v' gwch='git whatchanged -p --abbrev-commit --pretty=medium' gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip--"' history='fc -l 1' l='ls -lah'
即使你沒有安裝 zsh 和 oh-my-zsh,我的以爲這些別名的設置仍是能夠借鑑一下的。app
最後說一句:不一樣的 shell ,alias 配置文件是不一樣的,你執行 alias 顯示的也會不一樣。好比 Mac 默認的 bash,其配置文件多是 /etc/bashrc、~/bash_profile 或者 /etc/profile。而 zsh 默認是 ~/.zshrc.svn
另外,用命令 alias 設置的別名爲臨時別名,shell 重啓後就會失效。如:
alias la="ls -al"
。若是你重啓了還有效,那可能能在上述配置文件中找到。^_^學習
國慶快樂! :)fetch