如何清理my-branch分支中不属于我且不在master的提交?
清理my-branch分支的无效提交
先做好分支备份(必做)
任何修改分支历史的操作都有风险,先备份当前分支避免数据丢失:
git checkout my-branch git branch my-branch-backup
方法一:交互式Rebase(适合能清晰区分提交的场景)
- 拉取master分支的最新代码:
git fetch origin master
- 以master最新提交为基准,启动交互式rebase:
git rebase -i origin/master
- 编辑器会列出所有在master之后的提交,找到那些不属于你、且未合并到master的测试/垃圾提交,将它们前面的
pick改为drop(或直接删除对应行)。 - 保存并退出编辑器,Git会自动移除标记为
drop的提交。若遇到冲突,解决冲突后执行git rebase --continue,直到完成整个rebase流程。
方法二:Cherry-Pick(适合自己的提交数量少、易筛选的场景)
- 基于最新的master创建一个干净的新分支:
git checkout -b my-branch-clean origin/master
- 筛选出你在my-branch上的所有有效提交(替换成你的用户名或邮箱):
git log my-branch --author="你的用户名/邮箱" --oneline
- 将筛选出的提交逐个cherry-pick到新分支:
git cherry-pick <提交哈希1> <提交哈希2> ...
- 若遇到冲突,解决冲突后执行
git cherry-pick --continue,直到所有有效提交都迁移完成。
后续验证
操作完成后,用git log查看分支历史,确认无效提交已被移除且你的有效工作完整保留。确认无误后,可将my-branch-clean重命名为my-branch,或直接用它替换原分支。
内容的提问来源于stack exchange,提问作者Pikk
相关产品推荐
相关产品推荐

