🏠 首页 攻略 Git高频命令5个隐藏技巧,效率翻倍

Git高频命令5个隐藏技巧,效率翻倍

git log看不清历史?想恢复误删的代码?这5个Git高级用法帮你解决日常开发中最头疼的问题。附真实案例和一键复制的命令模板。

你的Git真的只用对了吗?

很多开发者用了几年Git,基本操作就是 add、commit、push、pull。遇到冲突就慌,代码丢了就哭。

今天分享5个Git的高级技巧,每个都是我从踩坑里总结出来的实战经验。学会之后,日常开发效率至少提升一倍。


技巧一:用 git log –graph 看清提交历史

默认情况下,git log 只是一行行平铺的提交记录。分支合并多的项目,根本看不出谁干了啥。

加上 --graph 参数,你会看到一棵清晰的提交树:

git log --graph --oneline --all

输出长这样:

*   3a2b1c9 (HEAD -> main) Merge branch 'feature/login'
|\  
| * d4e5f6a 实现登录页UI
* | b7c8d9e 修复路由配置
|/  
* e1f2a3b 初始化项目

进阶用法:加 -30 只看最近30条,加 --since="2 weeks ago" 只看两周内的提交。

git log --graph --oneline --all -30 --since="2 weeks ago"

这个命令是我每周回顾项目进度的标配。


技巧二:git stash 救急,比 commit 优雅多了

场景:你正在修一个bug,写到一半突然接到通知要紧急处理线上问题。

新手做法:先把当前修改 commit 一个"临时保存",处理完再 revert。

高手做法:用 git stash

# 保存当前工作区(包括未追踪的文件)
git stash push -u -m "修复登录bug进行到一半"

# 切换到紧急任务
git checkout main
git pull
# ... 处理线上问题 ...

# 回来继续干活
git stash pop

-u 参数会把新建但未跟踪的文件也存起来,-m 给这次保存起个名字,方便以后找回。

实用技巧:如果有多个 stash,用 git stash list 查看,用 git stash apply stash@{1} 恢复指定的那一次。


技巧三:git blame 揪出写烂代码的那个人

说实话,这个功能有点"不友好",但非常好用。

当你看到一段逻辑混乱、变量命名奇葩的代码,想知道是谁写的、什么时候写的、为什么这么写:

git blame src/utils/formatDate.js

输出每一行前面的提交哈希和作者信息:

^a1b2c3d (张三 2025-11-02 14:23:00 +0800  1) // 初始化
b4c5d6e7 (李四 2026-01-15 09:45:12 +0800  2) export function formatDate(date) {
c7d8e9f0 (王五 2026-03-20 16:10:33 +0800  3)   // TODO: 重构这段

进阶用法

  • git blame -L 10,30 file.js —— 只看第10到30行
  • git blame -C file.js —— 追踪代码是否被移动过(比如从其他文件拷过来的)
  • git blame --porcelain file.js —— 输出机器可读格式,可以配合脚本批量分析

技巧四:交互式变基(rebase -i),整理提交历史

假设你提交了10次,每次都是"fix"、“wip”、“fix again"这种垃圾提交名。现在要提 PR,需要把历史清理干净。

用交互式变基:

git rebase -i HEAD~10

编辑器会打开一个列表,类似这样:

pick a1b2c3d 修复登录接口
pick d4e5f6a wip
pick e7f8a9b 继续修bug
pick f0a1b2c fix again

把不需要的行,把 pick 改成 drop 或删除;把相邻的几个小提交合并成一个,把第二个及以后的 pick 改成 squash

改完后保存退出,Git 会自动重组历史。你可以给合并后的提交起一个好名字。

注意:只对还没有推送到远端的提交做 rebase。已经推送到 shared branch 的提交不要动,否则别人的历史会乱。


技巧五:git diff 三个隐藏参数,排查问题快十倍

git diff 是最常用的命令之一,但大多数人只知道 git diff 看当前改动。

这三个参数让你的 diff 功力提升一个档次:

1. --staged:看暂存区的差异

git diff --staged

很多人执行 git add 后就忘了自己加了什么。用这个命令可以确认暂存区的改动,避免 commit 错误的内容。

2. -W:只看函数级别的差异

git diff -W file.js

当一个大文件改了上百行,但核心变动只集中在几个函数里。-W 参数只显示有改动的函数范围,上下文大幅缩减,一眼就能定位关键变更。

3. --color-words:行内高亮差异

git diff --color-words file.py

普通 diff 是按行显示的,一行改了三个词你得来回对照。这个参数在同一行内用颜色标出增删的部分,适合快速对比小改动。


把这些技巧串起来:一个真实工作流

上面的五个技巧不是孤立的,它们可以组合成一个完整的日常开发流程:

  1. 开始工作前git log --graph -10 看一下最近都在搞什么
  2. 工作中被打断git stash push -u -m "中断原因" 优雅地保存现场
  3. Review 自己的代码git diff --staged 确认暂存区没问题
  4. 提交后整理历史git rebase -i HEAD~N 把零散提交合并成有意义的几个
  5. 回头看某段代码git blame 了解上下文

这套流程走下来,你的 Git 操作会从"会用"升级到"用得专业”。


写在最后

Git 的命令确实多,但真正影响效率的核心就这几个。不需要背下来所有参数,挑一两个先用起来就行。

你平时最头疼的 Git 场景是什么?欢迎在评论区聊聊。