Git高级技巧:10个让老程序员都直呼内行的操作

Git是每个开发者的必备技能,但大多数人只会 git addgit commitgit push 这三板斧。今天,我来分享10个Git高级技巧,掌握这些操作,你的版本控制能力将超越90%的开发者。

技巧一:交互式暂存(Interactive Staging)

不想把所有修改都提交?使用 git add -p 可以逐块选择要暂存的代码。

git add -p

Git会逐个展示修改的代码块(hunk),你可以选择:

  • y — 暂存这个块
  • n — 跳过
  • s — 拆分成更小的块
  • e — 手动编辑

实用场景:一次修改涉及多个功能,想分多次提交,保持git历史清晰。

技巧二:交互式Rebase(Interactive Rebase)

想修改最近几次提交的信息或合并提交?git rebase -i 是你的利器。

# 修改最近3次提交
git rebase -i HEAD~3

在打开的编辑器中,你可以:

  • pick — 保留提交
  • reword — 修改提交信息
  • squash — 合并到上一个提交
  • drop — 删除提交

技巧三:Reflog — 时光倒流的救命稻草

误操作了?比如错误的reset或rebase?Reflog记录了HEAD的所有移动历史。

# 查看HEAD的移动历史
git reflog

# 回退到某个状态
git reset --hard HEAD@{2}

注意:Reflog只保留90天的记录,且只在本地有效。

技巧四:Bisect — 用二分法找Bug

知道某个commit引入了Bug,但不确定是哪个?git bisect 用二分查找帮你快速定位。

# 开始二分查找
git bisect start
git bisect bad          # 标记当前版本有Bug
git bisect good v1.0    # 标记v1.0版本没有Bug

# Git会自动checkout中间版本,测试后标记
# 测试结果正常:
git bisect good
# 测试结果有Bug:
git bisect bad

# 找到问题commit后结束
git bisect reset

如果有100个commit,只需测试7次就能找到引入Bug的那个commit。

技巧五:Stash — 临时保存工作区

需要紧急切换分支,但当前修改还没完成?Stash可以临时保存你的工作区。

# 保存当前修改
git stash push -m "功能A开发中"

# 查看所有stash
git stash list

# 恢复最近的stash
git stash pop

# 恢复指定的stash(不删除记录)
git stash apply stash@{1}

# 删除某个stash
git stash drop stash@{0}

技巧六:Cherry-Pick — 精确移植提交

想把某个分支上的特定提交移植到当前分支?

# 移植单个commit
git cherry-pick abc1234

# 移植多个commit
git cherry-pick abc1234 def5678

# 移植但不自动提交(可以继续修改)
git cherry-pick --no-commit abc1234

技巧七:Blame — 追踪代码历史

想知道某一行代码是谁写的、为什么写的?

# 查看文件每一行的最后修改者
git blame filename.py

# 查看某几行
git blame -L 10,20 filename.py

# 忽略空格修改
git blame -w filename.py

技巧八:Worktree — 同时在多个分支工作

需要同时在多个分支上工作,但不想频繁stash和切换?

# 创建一个新的工作目录,检出指定分支
git worktree add ../hotfix-branch hotfix

# 查看所有工作目录
git worktree list

# 删除工作目录
git worktree remove ../hotfix-branch

技巧九:自动补全和别名

~/.gitconfig 中添加常用别名,大幅提升效率:

[alias]
    co = checkout
    br = branch
    ci = commit
    st = status
    lg = log --oneline --graph --decorate --all
    unstage = reset HEAD --
    last = log -1 HEAD --stat

git lg 效果:一行显示分支图形化历史,非常直观。

技巧十:Git Hooks — 自动化你的工作流

Git Hooks可以在特定事件触发时自动执行脚本。

常用场景

  • pre-commit:提交前自动运行代码检查(ESLint、Prettier)
  • commit-msg:检查提交信息格式
  • pre-push:推送前运行测试

推荐工具:Husky(Node.js项目),可以方便地管理Git Hooks。

总结

Git是一个功能极其强大的工具,以上10个技巧只是冰山一角。建议每个技巧都实际动手练习一下,在真正需要的时候才能信手拈来。

学习路径推荐

  1. 先掌握基础命令(add/commit/push/pull/merge)
  2. 学习分支管理(branch/checkout/rebase)
  3. 掌握本文的高级技巧
  4. 了解Git内部原理(.git目录结构、对象模型)

你有什么Git使用心得?或者有什么Git难题想讨论?欢迎评论区留言!

上一篇 网络安全入门:8个你必须知道的防护技巧(附实操指南)