和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

周小六
7 声望1 粉丝