和 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