前言
Git 是日常开发中不可或缺的工具,但很多人可能只停留在 add、commit 和 push 的阶段。其实,Git 还隐藏着许多能大幅提升效率的“魔法”命令。今天分享 5 个实用的 Git 技巧,帮助你在处理复杂代码版本时更加得心应手。
1. 使用 git stash 临时存放修改
正在专心写代码时,突然被告知线上有个紧急 Bug 需要修复,但当前手头的工作还没写完,不想产生一次“半成品”的提交。这时候,git stash 就是你的救星。
它能将你工作区和暂存区的未提交修改暂时保存起来,让你的工作目录恢复到干净状态。
# 保存当前进度
git stash
# 切换到其他分支修复 Bug...
# 回来后恢复进度
git stash pop
小贴士: 可以使用
git stash save "修复登录逻辑"为你的储藏添加备注,方便后续查找。
2. 使用 git commit --amend 修改最后一次提交
刚敲完 git commit,突然发现拼写错了提交信息,或者忘记了 git add 某个小文件。这时候不需要再额外增加一个“修复错别字”的提交,直接用 --amend 就能修改最近一次提交。
# 添加遗漏的文件
git add forgotten_file.txt
# 修改提交(如果不加 -m,会打开编辑器修改原信息)
git commit --amend --no-edit
注意: 如果该提交已经
push到了远程公共分支,请尽量避免使用amend,以免引起协作者的提交历史冲突。
3. 使用 git reflog 找回“丢失”的提交
有时候在进行 reset --hard 或者变基操作后,可能会觉得“哎呀,我把重要代码弄丢了”。别慌,Git 几乎不会真正丢失数据。
git reflog 记录了 HEAD 和分支指针在本地仓库中的每一次移动。通过它,你可以找到那个“丢失”的 commit hash,然后重置回去。
git reflog
# 输出示例:
# 7d3a2f1 HEAD@{0}: reset: moving to 7d3a2f1
# a1b2c3d HEAD@{1}: commit: 重要的修改
# 找回之前的提交
git reset --hard a1b2c3d
4. 使用 git bisect 二分查找 Bug
当你发现代码突然跑不通了,但不知道是哪一次提交引入的 Bug 时,逐个 commit 去排查简直是一场噩梦。git bisect 提供了一个自动化的二分查找法。
# 开始二分查找
git bisect start
# 标记当前版本为有 Bug
git bisect bad
# 标记一个确认正常的旧版本(例如:v1.0.0)
git bisect good v1.0.0
Git 会自动为你切换到中间的提交。你测试后告诉 Git 这个版本是好是坏(git bisect good 或 git bisect bad),重复几次,Git 就能帮你精准定位到导致问题的那一行代码提交。最后用 git bisect reset 结束查找。
5. 使用交互式变基整理提交历史
在发起 Pull Request 前,我们常常想把几个零碎的提交合并成一个干净整洁的提交。交互式变基能够帮你实现这一点。
# 合并最近的 3 次提交
git rebase -i HEAD~3
运行后,终端会弹出一个文本编辑器,列出这 3 次提交。你可以将除了第一行以外的 pick 改为 squash(或者简写为 s),保存退出。接着 Git 会让你编辑合并后的提交信息。
pick 1a2b3c 第一次提交
squash 4d5e6f 修复拼写
squash 7g8h9i 补充注释
结语
Git 的强大远不止于此,掌握这些进阶技巧,不仅能让你在遇到突发状况时游刃有余,更能让你的代码仓库历史保持清爽。选择一两个你平时觉得最头疼的场景,尝试用这些命令解决吧!