Git求生指南:7大高频灾难现场与终极命令手册
一、清晨的噩梦:代码消失了!
场景:昨晚写的200行代码今早不翼而飞
# 1. 查看死亡现场(工作区/暂存区状态)
$ git status
# 2. 时间倒流术(恢复未暂存修改)
$ git restore <file> # 撤销工作区修改
$ git restore --staged <file> # 撤销暂存区修改
# 3. 终极复活术(找回已删除文件)
$ git checkout HEAD -- <file> # 从最后一次提交恢复
二、分支迷航:在代码宇宙中迷失方向
场景:同时开发3个功能却忘了自己在哪
# 1. 创建安全航道(分支操作)
$ git branch feature-payment # 创建分支
$ git switch feature-payment # 切换分支(推荐!)
$ git switch - # 回到上一个分支
# 2. 查看星际地图(分支拓扑)
$ git log --oneline --graph --all
* 7a3b1d7 (HEAD -> main) 修复登录BUG
| * d9f4a02 (feature-payment) 支付接口
|/
* c810e9d 初始化项目
# 3. 紧急迫降(强制回退分支)
$ git reset --hard origin/main # 丢弃本地所有修改
三、提交污染:把TODO推上了生产线
场景:不小心提交了未完成的代码
# 1. 撤回未推送的提交
$ git reset HEAD~1 # 撤回commit保留修改
$ git reset --soft HEAD~1 # 撤回commit且保留暂存
# 2. 修改历史提交记录(危险操作!)
$ git commit --amend # 修改最后一次提交
$ git rebase -i HEAD~3 # 交互式修改多个提交
# 3. 已推送代码的拯救方案
$ git revert <commit-id> # 生成反向提交抵消错误
四、冲突风暴:合并时遭遇代码核战
场景:多人修改同一文件引发冲突
<<<<<<< HEAD
console.log("新版本功能");
=======
console.log("旧版本逻辑");
>>>>>>> feature-old
# 1. 手动解决冲突后标记完成
$ git add conflict-file.js
$ git commit -m "解决合并冲突"
# 2. 使用可视化工具(VSCode内置)
$ git mergetool
# 3. 放弃合并回到和平年代
$ git merge --abort
五、文件失踪案:误删重要代码
场景:手滑执行了 rm -rf
# 1. 从Git回收站找回(所有未提交删除可恢复)
$ git restore deleted-file.js
# 2. 查看历史操作记录
$ git reflog # 找到删除前的commit
d9f4a02 HEAD@{1}: commit: 支付接口开发
# 3. 时空穿越恢复文件
$ git checkout d9f4a02 -- src/payment.js
六、提交洁癖:打造完美Commit历史
场景:提交记录杂乱像垃圾场
# 1. 整理本地提交(交互式变基)
$ git rebase -i HEAD~5
# 弹出编辑窗口:
pick c810e9d 初始化
squash 7a3b1d7 修复BUG
reword d9f4a02 支付功能
# 2. 压缩多个提交为原子提交
$ git reset --soft HEAD~3
$ git commit -m "完整支付模块"
# 3. 重写提交信息
$ git commit --amend -m "更清晰的描述"
七、远程作战:团队协作生存法则
场景:同事的代码覆盖了你的修改
# 1. 安全推送三板斧
$ git fetch # 先查看远程变化
$ git rebase origin/main # 变基整合(保持历史线性)
$ git push --force-with-lease # 安全强制推送
# 2. 抢救被覆盖的提交
$ git reflog show origin/main
$ git push origin d9f4a02:main --force
# 3. 创建安全隔离区
$ git worktree add ../hotfix-branch
$ cd ../hotfix-branch
$ git switch hotfix # 完全独立的工作目录
命令速查表(文字版)
场景 | 救命命令 | 危险系数 |
---|---|---|
撤销修改 | git restore <file> | ★☆☆☆☆ |
分支切换 | git switch - | ★☆☆☆☆ |
修改历史 | git rebase -i | ★★★★☆ |
强制推送 | --force-with-lease | ★★★☆☆ |
找回删除文件 | git checkout HEAD^ -- <file> | ★☆☆☆☆ |
「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路! 🚀