解决git代码提交错分支但还没有推送

381 阅读2分钟

问题

在开发中偶尔会遇到在错误的分支上开发,不小心提交,但还没有推送问题

场景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 "正确的提交信息"