Skip to content

命令行增强工具

以下工具让 Git 命令行操作更加高效和直观。

Oh My Zsh Git 插件

Oh My Zsh 的 Git 插件提供了大量别名和辅助函数:

bash
# 安装 Oh My Zsh(如果未安装)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 在 ~/.zshrc 中启用 git 插件
plugins=(git)

常用别名(部分):

bash
g     = git
ga    = git add
gaa   = git add --all
gco   = git checkout
gcb   = git checkout -b
gb    = git branch
gbr   = git branch --remote
gc    = git commit -v
gcmsg = git commit -m
gd    = git diff
gf    = git fetch
gl    = git pull
gp    = git push
gpsup = git push --set-upstream origin $(git_current_branch)
grb   = git rebase
grbi  = git rebase -i
gst   = git status
gstp  = git stash pop
glog  = git log --oneline --decorate --graph

完整列表:Oh My Zsh Git 别名

git-delta(美化 diff 输出)

delta 是一个语法高亮、行号显示的 diff 查看工具:

安装

bash
# macOS
brew install git-delta

# Ubuntu/Debian
sudo apt install git-delta

# Windows
winget install dandavison.delta

配置

~/.gitconfig 中:

ini
[core]
    pager = delta

[interactive]
    diffFilter = delta --color-only

[delta]
    navigate = true      # 使用 n/N 在 diff 块间跳转
    light = false        # 暗色主题
    side-by-side = true  # 并排显示(可选)
    line-numbers = true  # 显示行号
    syntax-theme = Dracula

[merge]
    conflictstyle = diff3

[diff]
    colorMoved = default

效果:

  • 语法高亮(识别编程语言)
  • 显示行号
  • 漂亮的颜色方案
  • 清晰的分隔符

tig(终端 Git 浏览器)

tig 是一个基于 ncurses 的终端 Git 界面:

安装

bash
# macOS
brew install tig

# Ubuntu/Debian
sudo apt install tig

使用

bash
# 查看提交历史(主界面)
tig

# 查看特定文件的历史
tig src/app.js

# 查看所有分支
tig --all

# blame 视图
tig blame src/app.js

# 查看 stash
tig stash

tig 快捷键:

j/k       向下/上移动
Enter     进入详情视图
h         显示帮助
q         退出
/         搜索
d         差异视图
y         blame 视图
r         引用视图(分支/标签列表)
s         状态视图(类似 git status)
c         提交视图

lazygit(终端 Git UI)

lazygit 是功能最强大的终端 Git 界面,支持几乎所有 Git 操作:

安装

bash
# macOS
brew install lazygit

# Ubuntu/Debian
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin

# Windows
winget install JesseDuffield.lazygit

# 在 VS Code 终端中使用
alias lg='lazygit'

主要功能

lazygit 界面分为 5 个面板:
1. 文件(Files)  - 工作区状态,暂存/取消暂存
2. 分支(Branch)- 分支管理
3. 提交(Commits)- 提交历史,可以 rebase/cherry-pick
4. 贮藏(Stash)- stash 管理
5. 差异(Diff)  - 右侧显示当前选中的差异

常用操作:
Space     暂存/取消暂存
c         提交
P         push
p         pull
b         新建分支
d         删除
r         重命名/rebase
e         编辑提交(rebase -i)
i         交互式 rebase(选择多个提交)
?         帮助

为什么选择 lazygit:

  • 可以用键盘完成几乎所有 Git 操作
  • 交互式 rebase 变得非常直观
  • 可视化解决冲突
  • 支持 stash 的所有操作
  • 与 VS Code 的 terminal 集成完美

fzf + git 联动

fzf 是一个命令行模糊搜索工具,与 Git 结合极其强大:

安装

bash
# macOS
brew install fzf
$(brew --prefix)/opt/fzf/install  # 安装 shell 绑定

# Ubuntu/Debian
sudo apt install fzf

# Windows
winget install fzf

Git + fzf 组合

bash
# 模糊选择分支并切换
git branch | fzf | xargs git switch

# 模糊选择分支并切换(简化别名)
alias gco='git branch | fzf | xargs git switch'

# 模糊搜索提交历史
git log --oneline | fzf --preview 'git show --color=always {1}'

# 模糊选择文件并查看 blame
git ls-files | fzf --preview 'git blame --color=always {}' | xargs git blame

# 模糊选择 stash 并应用
git stash list | fzf | grep -oE 'stash@{[0-9]+}' | xargs git stash pop

高级别名(添加到 ~/.zshrc 或 ~/.bashrc):

bash
# 模糊搜索分支并切换
fbr() {
  local branches branch
  branches=$(git branch --all | grep -v HEAD) &&
  branch=$(echo "$branches" | fzf -d $(( 2 + $(wc -l <<< "$branches") )) +m) &&
  git checkout $(echo "$branch" | sed "s/.* //" | sed "s#remotes/[^/]*/##")
}

# 模糊搜索提交历史(可以 checkout 到选中的提交)
fco() {
  local commits commit
  commits=$(git log --pretty=oneline --abbrev-commit --reverse) &&
  commit=$(echo "$commits" | fzf --tac +s +m -e) &&
  git checkout $(echo "$commit" | sed "s/ .*//")
}

# 模糊搜索标签
ftag() {
  git tag | fzf | xargs git checkout
}

工具组合推荐

bash
# 日常开发的推荐工具链
brew install git-delta tig lazygit fzf

# ~/.gitconfig 配置 delta
[core]
    pager = delta
[interactive]
    diffFilter = delta --color-only

# ~/.zshrc 别名
alias lg='lazygit'
alias t='tig'
alias gco='git branch | fzf | xargs git switch'

总结

工具用途学习成本
Oh My Zsh Git 插件命令别名低(直接使用即可)
git-delta美化 diff 输出低(配置后自动生效)
tig终端浏览仓库历史中(需要熟悉快捷键)
lazygit终端 Git 全功能界面中(功能强大,值得投入)
fzf模糊搜索增强中(需要配置别名)

这些工具的共同特点是:不改变 Git 的底层行为,只是让命令行操作更加高效和直观。推荐至少尝试 git-deltalazygit,它们能显著提升日常 Git 操作体验。