如何撤销特定开发者分支的所有更改并保留其他开发者代码?
撤销特定开发者在development分支的所有更改
核心原则
因为是多人协作的公共分支,绝对不要用git reset——它会重写分支历史,导致其他开发者本地分支和远程仓库出现严重冲突。推荐用git revert创建新提交来撤销更改,既安全又不会破坏已有历史。
操作步骤
切换到本地development分支并拉取最新代码:
git checkout development git pull origin development列出该开发者的所有提交记录
替换<开发者用户名/邮箱>为实际信息(支持部分匹配,比如"张三"或"zhangsan@example.com",注意大小写敏感):git log --author="<开发者用户名/邮箱>" --oneline development输出会是按从新到旧排序的提交列表,类似:
abc123 修复支付模块bug def456 新增用户管理页面 ghi789 调整首页布局把这些提交ID(abc123、def456等)记录下来。
批量或逐个撤销提交
- 批量处理(推荐,减少碎片化提交):
用--no-commit让Git暂存所有撤销更改,最后一次性提交:
完成后统一提交:git revert --no-commit abc123 def456 ghi789git commit -m "Revert all changes made by <开发者用户名>" - 逐个处理(适合冲突较多的场景):
从最新的提交开始逐个执行revert,每处理完一个提交一次:git revert abc123 git revert def456 git revert ghi789
- 批量处理(推荐,减少碎片化提交):
解决冲突(若出现)
当revert遇到代码冲突时,Git会提示冲突文件。打开文件后,保留其他开发者的代码(删除该开发者的更改内容,同时清理Git标记的冲突符号<<<<<<<、=======、>>>>>>>),然后:git add <冲突文件名> # 批量revert场景下继续执行: git revert --continue # 逐个revert场景下直接提交即可推送到远程分支
确认所有更改处理完成后,推送到远程development:git push origin development
实用小技巧
- 不确定提交归属时,用
git show <提交ID>查看提交详情确认。 - 若该开发者提交数量极多,可批量生成提交ID列表自动处理:
执行完记得手动提交撤销记录。git log --author="<开发者用户名/邮箱>" --format="%H" development | xargs git revert --no-commit
内容的提问来源于stack exchange,提问作者Lokendra Chaulagain
相关产品推荐
相关产品推荐

