假設(shè)你在 main 分支,剛做完提交
git branch dev # 新建 dev 分支,指向當(dāng)前提交
git reset --hard HEAD~1 # main 回退到上一個(gè)提交,改動(dòng)會從 main 上消失
現(xiàn)在 dev 分支上保留了你剛做的改動(dòng),main 恢復(fù)干凈。
情況二:開發(fā)分支已經(jīng)存在
需要把提交“摘”過去,再清理基分支。
bash
1. 先查看提交歷史,記住最新提交的 hash(假設(shè)是 abc1234)
git log --oneline -3
2. 切換到開發(fā)分支(如 dev)
git checkout dev
3. 把那個(gè)提交摘到 dev 上
git cherry-pick abc1234
如果有沖突,解決后 git add . && git cherry-pick --continue
4. 切回基分支,撤銷那個(gè)提交
git checkout main
git reset --hard HEAD~1 # 或者 git reset --hard abc1234 的前一個(gè)提交
如果 dev 和 main 差異較大,cherry-pick 可能沖突,正常解決即可。
?? 動(dòng)手前務(wù)必確認(rèn)
當(dāng)前工作區(qū)干凈(git status 無未提交文件)。
用 git log --oneline -3 確認(rèn)最新提交就是你想移動(dòng)的那一個(gè)。
如果擔(dān)心出錯(cuò),可先備份:git branch backup-main。
這樣你就把代碼安全挪到自己的開發(fā)分支,基分支也恢復(fù)原狀了。