之前有写过 Git alias 的文章, 不过已经过去了很多时间,现在对 Git 命令越来越熟悉就希望更快的提高输入效率,也越来越感受到 alias 的重要性,不管是直接在 bash 中的 alias 还是 Git 的 alias。所以准备找一些合适的 alias 添加到自己的 gitconfig 文件中长期使用。

添加 alias

使用命令的方式添加

git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short"
git config --global alias.type 'cat-file -t'
git config --global alias.dump 'cat-file -p'

git status, git add, git commit, git checkoutgit branch 是最常见的 git 命令,给他们设置 alias 能提高不少效率。使用以上命令添加 alias ,其实作用等同于直接编辑 HOME 目录下的 gitconfig 文件, vim ~/.gitconfig:

[alias]
  co = checkout
  ci = commit
  st = status
  br = branch
  hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
  type = cat-file -t
  dump = cat-file -p

如果这样设置之后就可以使用 git co <branch> 来切换分支了。

bash alias

可以在 ~/.bashrc 或者 ~/.zshrc 中设置 alias g=git 这样就可以使用 g checkout 来代替 git checkout 了。

oh-my-zsh

除了使用 git 自身的 alias 还可以使用 oh-my-zsh 来进一步简化 git 命令的使用。

使用 oh-my-zsh 简化 git 命令

比如一个正常的 git 提交流程:

  • git add .
  • git commit -m ‘fix: some fix’
  • git push

使用 oh-my-zsh 之后,可以简化成

  • gaa
  • gcm “fix:some fix”
  • gp

安装 oh-my-zsh 后默认会打开 git 插件,可以使用其提供的自动补全。

罗列几个常用的作为示例,展示它们的作用:

快捷键 git 命令 描述
g git git
gp git push 推送
gl git pull 拉取
gaa git add –all 添加当前项目所有文件修改、增删的文件到缓存区
gc! git commit -v –amend 修正上次提交
gcm git commit -m 提交项目到本地库,其中-a 表示不用再次输入 git add 命令
gcb git checkout -b 将特定分支上暂存储区的内容替换当下工作区的内容,
gcm git checkout $(git_main_branch) 切到 main 或者 master
gcd git checkout $(git_develop_branch) 切到 develop
gbD git branch -D 删除分支
glods git log –graph –date=short 查看提交记录
gm git merge 合并分支
grb git rebase 变基
grhh git reset –hard 重置
gcp git cherry-pick <commitId> 从其他分支 选取一次提交
gsta git stash push 保存修改为暂存
gstp git stash pop 弹出暂存

结合 fzf

结合 fzf 的使用可以充分发挥 fzf 模糊搜索的能力。

比如我自己定义了 gcbr 表示 git checkout branch,然后 fzf 会根据 git 的信息将我所有的本地分支和远程分支拉取出来,然后我就可以进行模糊搜索,直接回车就可以切换到该分支。

reference