我有一支技术全面、经验丰富的小型团队,专注高效交付中等规模外包项目,有需要外包项目的可以联系我
每个开发者都背得出 Git 的基础咒语:add、commit、push。它安全、顺手、像一条走惯了的老路。可问题是——真正让你变强的,不在路面上,而在路面下面:Git 还藏着一堆“能让你工作流瞬间开挂”的硬核命令。
把这 15 个命令吃透,你得到的不只是速度。你会更有底气,流程更稳,历史更干净,甚至连 commit 记录都会好看得像艺术品。
来,开打。
1)git rebase -i(交互式变基)
它干嘛:在把分支合进共享分支前,帮你把提交历史“整理成能见人”的样子:压缩(squash)、改消息(reword)、编辑(edit)、丢弃(drop)都行。
优点:
让历史线性、干净、可读
把零散改动归并成“逻辑提交”
大项目里维持专业提交记录几乎离不开它
缺点:
别对已经 push 到公共/共享分支的提交用它:它会重写历史,队友会原地爆炸
对新手来说略吓人、也容易误操作
Pro Tip:PR 前在功能分支上用:
git rebase -i main把 “WIP”“fix typo” 这种碎提交,压成更像样的功能提交。
2)git stash你的工作“快速存档”
它干嘛:把未提交的改动临时塞进“抽屉”,让你立刻回到干净工作区去处理别的事。
优点:
切换上下文快到飞起
不用为了换任务硬凑“半成品提交”
能存多个 stash,之后再拿出来
缺点:
很容易忘了抽屉里塞了啥(用
git stash list查)stash 只在本地,不会推到远端
Pro Tip:给 stash 起名字:
git stash push -m "descriptive message"恢复用:git stash pop(恢复并移除)或git stash apply(恢复但保留)。
3)git bisect回归 bug 猎手
它干嘛:用二分法帮你找到“到底是哪一次提交把 bug 引进来的”。你标一个 good(没 bug)和 bad(有 bug),Git 自动切换提交让你测。
优点:
找回归问题快很多,节省大量人肉排查时间
把枯燥过程自动化
缺点:
需要明确可验证的 good/bad 标准
如果测试只能手动点点点,过程会慢
Pro Tip:能自动测就自动测:
git bisect run <script_name>Git 会每步运行脚本,最终定位“罪魁祸首提交”。
4)git reflog你的“后悔药”
它干嘛:记录你本地仓库发生过的一切:commit、checkout、rebase、merge……你走过的路都在这里。
优点:
能救回“被你 reset --hard 或 rebase 搞丢”的提交
本地事故的终极撤销键
缺点:
记录可能很长也很神秘
reflog 是本地的,并且默认大约 90 天过期
💡Pro Tip:rebase 搞崩了?用 reflog 找到出事前的 hash:
git reflog git reset --hard <hash>5)git cherry-pick精准摘樱桃
它干嘛:把某个提交(或一组提交)的改动“复制”到当前分支。
优点:
热修复神器:从功能分支摘一个修 bug 的提交直接贴到 main
跨分支搬运少量改动,不用整枝合并
缺点:
用多了会产生重复提交,历史变乱
也会冲突,和 merge/rebase 一样躲不掉
Pro Tip:少量用很香;如果你在同一分支上摘很多次,通常说明应该 merge 或 rebase 了。
6)git worktree多线作战神器
它干嘛:同一个仓库开多个工作目录,分别对应不同分支。你可以同时开 main 和 feature,不用 stash 来回切。
优点:
上下文切换“物理隔离”,体验像开了分身
一边跑测试/构建,一边继续写代码
缺点:
多占一点磁盘
需要多管理一个概念
Pro Tip:给某分支开一个新目录:
git worktree add ../my-feature-branch feature/branch-name7)git log --oneline --graph --allASCII 历史图
它干嘛:用简洁的一行日志 + 图形结构,显示所有分支的分叉与合并关系。
优点:
一眼看懂分支拓扑
比默认 log 清晰太多
缺点:
基本没有(纯提升)
Pro Tip:做个别名直接封神:
git config --global alias.lol "log --oneline --graph --decorate --all"以后一句git lol就有漂亮历史图。
8)git commit --amend临门一脚修正
它干嘛:修改最近一次提交:改提交信息,或把漏加的改动塞进去。
优点:
修 commit message 拼写
漏加文件不用再造一个 “oops commit”
缺点:
和 rebase 一样会重写历史:别 amend 已经推到共享分支的提交
Pro Tip:不改 message 只补改动:
git commit --amend --no-edit9)git diff --staged提交前体检
它干嘛:看“已暂存内容”和“上一提交”的差异,也就是你下一次 commit 真正会包含的内容。
优点:
防止把调试代码/注释/乱改一起提交
帮你写更准确的提交说明
缺点:
容易忘,只用
git diff看得不够精准
Pro Tip:把它当成提交必做动作,真的能救命。
10)git restore现代撤销命令
它干嘛:更直观地恢复文件,逐步替代checkout/reset在文件级操作上的“迷惑行为”。
优点:
意图清晰
丢弃未暂存改动:
git restore <file>取消暂存:
git restore --staged <file>
缺点:
老版本 Git 可能没有
习惯了 checkout/reset 的人要换脑回路
Pro Tip:早点适应restore,它更不容易写错。
11)git blame代码侦探
它干嘛:逐行告诉你:谁最后改了这一行、在哪个提交里改的。
优点:
理解“为什么这么写”非常有用
让你知道应该找谁问这段逻辑
缺点:
容易被用来“甩锅”——请把它当学习工具,而不是指责工具
Pro Tip:忽略空格改动:
git blame -w12)git clean工作区清洁工
它干嘛:删除未跟踪文件(构建产物、日志、临时文件等)。
优点:
让工作区真正干净
释放磁盘空间
缺点:
危险:删了就没了,没撤销
Pro Tip:永远先 dry-run:
git clean -n确认无误再强制删除:
git clean -f13)git tag发布锚点
它干嘛:给某个提交打一个永久标签,常用于版本发布(v1.0.0 之类)。
优点:
为特定版本提供稳定引用
正规发布流程必备
缺点:
轻量 tag 只是指针;发布建议用带元数据的注释 tag
Pro Tip:发布永远用 annotated tag:
git tag -a v1.5.0 -m "Release version 1.5.0" git push --tags14)git submodule“项目套项目”管理器
它干嘛:把另一个 Git 仓库作为子目录嵌进来,但保留其独立历史。
优点:
适合引入有独立生命周期的共享库/组件
能锁定外部仓库到某个 commit
缺点:
工作流更复杂(
git submodule update --init)新人常懵:为啥这个文件夹是空的?
Pro Tip:克隆时一把带走:
git clone --recurse-submodules <repo-url>15)git shortlog贡献汇总器
它干嘛:把 git log 按作者分组,快速看谁做了什么。
优点:
生成 release notes 或贡献概览很方便
-n按提交数排序,-s只显示数量
缺点:
提交数不等于生产力,但作为概览入口挺好用
全栈AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击二维码了解更多详情。
最后:
CSS终极指南
Vue 设计模式实战指南
20个前端开发者必备的响应式布局
深入React:从基础到最佳实践完整攻略
python 技巧精讲
React Hook 深入浅出
CSS技巧与案例详解
vue2与vue3技巧合集