和Shell中的alias一樣,git的alias可以用來簡化命令的輸入,一起搞事情。
如果你希望使用git c -m
來替換git commit -m
,或者使用git s
來替換git status
,改如何完成?
git config --global alias.c "commit"
git config --global alias.s "status"
相關的配置會保存到~/.gitconfig
中
[alias]
c = commit
s = status
更棒的是,你可以使用alias來完成一些複雜的任務。
例如:我們經常需要將origin/master的最新更改rebase到自己的分支中,可以如下配置
git config --global alias.fr '!git fetch && git rebase -i origin/master'
> git fr
!
的作用是,在這個repository的根目錄中執行該命令
因此,你可以在這個repo的任何一個目錄中執行git fr
有一些我覺得不錯的alias,可以給大家參考
git config --global alias.amend "commit — amend"
git config --global alias.g "grep"
git config --global alias.master "checkout master"
git config --global alias.pushf "push --force-with-lease"
git config --global alias.path rev-parse --show-toplevel
# 幾種格式化的log
git config --global alias.hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short"
git config --global alias.standup !git log --all --no-merges --graph --date=relative --committer=$(git config --get user.email) --pretty=format:'%C(cyan) %ad %C(yellow)%h %Creset %s %Cgreen%d' --since=$(if [[ Mon == $(date +%a) ]]; then echo last friday; else echo yesterday; fi)
git config --global alias.today log --pretty=format:"%Cred%h %Cgreen%cd%Creset | %s%C(auto)%d %Cgreen[%an]%Creset" --date=local --since=midnight
Last one: Special one
git config — global alias.fxxk reset --hard