用Git五六年了,发现大部分人只用到add/commit/push/pull四个命令。分享几个真正提升效率的技巧。
1. git bisect —— 找bug的利器。场景:一个月前功能还正常,现在出bug了,中间有两百个commit,不知道哪个引入的。git bisect start→标记当前版本是坏的(git bisect bad)→标记一个月前的版本是好的(git bisect good 某个commit hash)→Git自动二分查找,每次checkout到中间的一个commit让你测试→告诉它是好还是坏→重复几次就能精准定位出问题的commit。两百个commit用二分法大概7步就能找到,比自己肉眼翻快太多了。
2. git stash push -m "描述" —— 而不是git stash。大部分人的习惯是git stash把工作暂存,然后用git stash pop取回来。但如果一天暂存了好几次,git stash list显示的是一堆没有描述的信息。push时加-m可以写备注,取回用git stash pop stash@{N}精准取。
3. git reflog —— 救命命令。不小心git reset --hard了不该reset的commit?或者删了一个分支才发现上面有没合并的代码?git reflog记录了HEAD的所有移动历史,包括已经"消失"的commit。找到你要恢复的那个commit hash,然后git checkout -b 新分支名 那个hash,代码就回来了。前提是没超过垃圾回收期(默认90天)。
4. git rebase -i HEAD~N —— 整理commit历史。在push之前,把最近N个commit合并、修改commit信息、调整顺序。常用的场景:功能开发过程中提交了十几个"fix typo"、"WIP"、"测试"之类的commit,push到主分支之前用rebase -i把它们合并成2-3个有意义的commit。合并用的关键字是squash(s)或fixup(f),后者直接把commit合并但丢弃它的commit信息。
5. git worktree —— 同时开多个分支。需要在当前分支跑测试的同时在另一个分支修bug?传统做法是另外clone一份代码,但git worktree可以在同一个仓库里创建多个工作目录,每个目录对应不同分支。git worktree add ../feature-2 feature-2就创建了一个新目录,里面是feature-2分支的代码。两个目录可以同时运行不同的开发任务,互不干扰。2026年Node.js和Rust项目里越来越多人用这个替代stash来切换任务了。
Bonus:用.gitconfig里的alias简化高频命令。比如git lg = log --oneline --graph --all --decorate,一个命令看完整的提交树。这套命令记熟了以后,命令行操作比任何GUI都快。
还木有评论哦,快来抢沙发吧~