【git】误操作后怎么解决
步骤方案(推荐方法:cherry-pick 正确提交到新分支)
① 回到主分支,创建新分支
git checkout main
git pull origin main # 确保是最新
git checkout -b dev-clean # 从 main 创建新分支在git checkout main之前,如果你目前的代码已修改但是未提交,可以用stash暂存
# 暂存所有未提交的修改(包括工作区和暂存区)
git stash save "暂存引擎配置修改(未完成)" # 切换到main分支(暂存后,工作区 clean,无冲突)
git checkout main # (后续回到dev-zyx分支时,恢复暂存的修改)
git checkout dev-zyx
git stash pop # 恢复暂存的修改,并删除stash记录
# 或 git stash apply # 恢复但保留stash记录(需手动删除)
② 查看 dev
分支提交历史,找到“正确”的 commit ID
git log dev --oneline
记住你要保留的那些 commit 的 ID(比如 a1b2c3d
和 h7i8j9k
)
③ 回到 dev-clean
分支,cherry-pick 正确提交
git checkout dev-clean# 按顺序挑选提交
git cherry-pick h7i8j9k
git cherry-pick a1b2c3d
如果中间有冲突,会提示你解决冲突,解决后继续:
git add .
git cherry-pick --continue
④ 成功后,你的 dev-clean
就是干净的分支,包含了 main
+ 正确的 dev
提交。
补充说明
cherry-pick:可以精确地将某些 commit 应用到当前分支,适合你现在这种“挑干净提交”的场景;
不要直接修改 dev:否则历史就乱了,建议保留
dev
作为备份;cherry-pick 时顺序很重要,按提交时间顺序来;