惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
H
Hackread – Cybersecurity News, Data Breaches, AI and More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
小众软件
小众软件
月光博客
月光博客
D
DataBreaches.Net
L
LangChain Blog
美团技术团队
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Help Net Security
阮一峰的网络日志
阮一峰的网络日志
Y
Y Combinator Blog
I
InfoQ
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
腾讯CDC
Martin Fowler
Martin Fowler

博客园 - 丁少华

adb提取本机apk 安卓ADB调试安卓 高德地图车机版本9.5制作共存 Taskfile 拆分子文件 go项目的taskfile Go 内嵌网页 windows的终端像mac一样好用 pgsql指定用户看到某个表 vue不使用根组件 Huma + Orval 前后端 API 自动生成方案 Mac安装nginx 不喜欢Go的几点 React UI 库推荐 Loop Engineering Vue 3 UI 组件库 Neon白嫖免费pgsql 域名利用cloudflare免费图床 nginx反代CloudflarePages提示502 vite使用shadcn vite使用biome Window下Nginx winserver2022安装不上软件 mac已损坏无法打开 代码高亮 命令运行器之task 命令运行器之just windows开启wsl 白嫖Redis 白嫖MongoDB vercel无服务函数
代码写错分支拯救指南
丁少华 · 2026-07-29 · via 博客园 - 丁少华

前言

不小心改动在test分支,而非自己的feature/xxx上,就先本地commit,记录本次的commitId然后切换到feature/xxx,最后git cherry-pick commitId即可记得到test将刚才的commit 回退

这就是日常 Git 操作中最经典的“代码写错分支”拯救指南之一!你使用的逻辑完全正确,通过 cherry-pick 能够非常精准地把提交“移”回正确的分支。

针对你提到最后要去 test 分支把刚才误提交的 commit 回退,这里提供两种最优雅的处理方式,取决于你是否已经把 commit 推送(push)到了远端 test 分支


情况一:本地 commit,尚未 git push(推荐做法)

如果刚才在 test 上的 commit 只是保存在本地,千万不要在 test 上做额外的撤销 commit,直接用 git reset 将指针拉回即可,干净不留痕迹:

# 1. 切换到你的特性分支
git checkout feature/xxx

# 2. 把刚刚记录的 commit 拿过来
git cherry-pick <commitId>

# 3. 切回 test 分支
git checkout test

# 4. 直接撤销最后一次 commit(保留改动的暂存状态或直接丢弃均可)
# 如果刚才 cherry-pick 已经成功到了 feature/xxx,这里可以直接干掉 test 上的最后一次提交:
git reset --hard HEAD~1

提示:使用 git reset --hard HEAD~1 会让 test 分支干净得就像什么都没发生过一样,完全不会留下历史记录。


情况二:误提交且已经 git push 到远端 test

如果该 commit 已经被推到了共享的远端 test 分支,为了不影响其他同学拉取代码,不建议强行 force push,此时应当采用 git revert

# 1. 切换到 feature/xxx 并拣选 commit
git checkout feature/xxx
git cherry-pick <commitId>

# 2. 切回 test 分支
git checkout test

# 3. 产生一个新的反向提交来抵消误提交
git revert <commitId>

# 4. 将撤销操作推送到远端
git push origin test


💡 极速小技巧(补充)

如果你在 test 分支写了代码但还没有 commit,不需要 commit 也能切分支!直接使用 stash 暂存区更省事:

# 1. 暂存未提交的代码
git stash

# 2. 切到目标分支
git checkout feature/xxx

# 3. 恢复并应用暂存的代码
git stash pop