代码写错分支拯救指南

前言

不小心改动在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

posted @ 2026-07-29 17:17  丁少华  阅读(7)  评论(0)    收藏  举报