问题
在开发中偶尔会遇到在错误的分支上开发,不小心提交,但还没有推送问题
场景1:错误分支仅有一次提交(推荐)
假设你在 wrong-branch 分支提交了代码(记为 commit-A),但实际应提交到 correct-branch
处理步骤:
1.确认提交哈希:
先查看提交记录,找到 commit-A 的哈希值
git log --oneline
2.切换到正确分支并应用提交:
切换到目标分支 correct-branch,并将 commit-A 应用过来:
git checkout correct-branch
git cherry-pick <commit-A的哈希> # 例如:git cherry-pick abc1234
3.清理错误分支(可选):
如果 wrong-branch 不再需要该提交,回到错误分支并回退到提交前的状态:
git checkout wrong-branch
git reset --hard HEAD~1 # 回退1步(根据提交次数调整数字)
场景2:错误分支有多个提交
如果 wrong-branch 有多个提交(如 commit-A、commit-B),但仅需移动最近的一个或多个到 correct-branch
处理步骤:
1.切换到正确分支:
git checkout correct-branch
2.选择要移动的提交范围(假设移动最近2个提交):
git cherry-pick <commit-B的哈希>^..<commit-A的哈希> # 注意顺序:旧提交在前,新提交在后
# 示例:git cherry-pick xyz5678^..abc1234(假设abc1234是更近的提交)
场景3:刚提交到错误分支,想直接“移动”提交到正确分支
# 1. 切换到错误分支
git checkout wrong-branch
# 2. 撤销最后一次提交(保留修改内容在工作区)
git reset --soft HEAD~1
# 3. 暂存修改(此时修改已回到工作区)
git stash
# 4. 切换到正确分支
git checkout correct-branch
# 5. 恢复修改到正确分支
git stash pop
# 6. 重新提交修改
git add .
git commit -m "正确的提交信息"