当前位置: 首页 > article >正文

git 撤销某次提交的上交到远程服务器的commit提交,此提交后面的commit需要保留【deeepseek生成】

核心思路 使用 git rebase -i 重写提交历史,删除目标提交后强制推送到远程(需谨慎操作)。

操作步骤
1. 确认要删除的提交位置

# 查看提交历史(找到要删除的提交哈希,例如 a1b2c3d)
git log --oneline

查看提交历史(找到要删除的提交哈希,例如 a1b2c3d)

git log --oneline
  1. 启动交互式变基(假设要删除的提交是倒数第3个)

进入变基编辑模式(基于目标提交的上一个提交)

git rebase -i HEAD~3

如果知道具体哈希值,可直接用:

git rebase -i a1b2c3d^  # ^ 表示目标提交的前一个提交

3. 编辑提交列表
在打开的编辑器中:

删除或注释掉(行首加 #)目标提交所在的行。
保存并退出编辑器。
示例:

pick 5a2b3c4 提交A
drop d4e5f6a 要删除的提交B  # 删除此行或改为 #drop
pick 7g8h9i0 提交C

4. 处理可能的冲突
如果变基过程中出现冲突:
手动解决冲突文件。
标记已解决的文件:

git add <冲突文件>
继续变基:
git rebase --continue
放弃变基(可选):
git rebase --abort
  1. 强制推送修改后的历史到远程
git push origin <分支名> --force

或使用更安全的选项(推荐团队协作时)

git push origin <分支名> --force-with-lease

注意事项
风险提示
强制推送 (–force) 会覆盖远程历史,仅限个人分支或团队允许时使用。
若其他成员已拉取旧历史,需通知他们同步更新(建议操作前协调)。
备份分支
操作前创建备份分支以防万一:

git checkout -b backup-branch

替代方案(保留历史)
若不想修改历史,可使用 git revert 生成反向提交(但会保留原提交记录):

git revert <提交哈希>
git push origin <分支名>

操作流程图解

原始提交历史:A -> B(要删除) -> C -> D
变基后历史:     A -> C' -> D'

适用场景
个人分支:清理误提交的敏感信息或错误代码。
团队协作分支:需确保所有成员知晓历史变更,避免协作混乱。
建议在操作前充分测试,确保对工作流影响可控。


http://www.kler.cn/a/583171.html

相关文章:

  • 【每日学点HarmonyOS Next知识】顶部状态栏、文本最大行数后缀、弹窗背景、状态栏颜色、导航
  • 【零基础入门unity游戏开发——进阶篇】Unity Microphone类处理麦克风相关信息,录制音频并实时处理或保存录制的音频数据
  • 鸿蒙ArkTs如何实现v-html的功能,显示富文本内容?
  • c#面试题12
  • (二)seacmsv9注入管理员账号密码+orderby+limit
  • 在windows10系统上搭建npm仓库源
  • 电子文档安全管理系统 V6.0 resources/backup存在任意文件下载漏洞(DVB-2025-8794)
  • Redis-配置文件
  • 7-3 谁先倒
  • 红帆 iOffice M2 移动端密码爆破的渗透测试思路,绕过客户端实现Burpsuite批量跑,分享渗透思路,共建网络安全
  • K8s 1.27.1 实战系列(八)Service
  • Jenkins 安装插件后构建成功但未启动容器的解决方法
  • linux抓包经历
  • 【Java】并发编程实战:单例模式 + 阻塞队列的终极实现指南
  • 成为git砖家(9): rebase进阶: 拆分commit为多个
  • 29.Harmonyos Next仿uv-ui 组件NumberBox 步进器组件自定义图标
  • 如何绕过 reCAPTCHA V2/V3:Python、Selenium 与其他工具的实战指南
  • 智慧城市时空基础设施建设与应用实践
  • MySQL——基础知识
  • Tensorflow 2.0 GPU的使用与限制使用率及虚拟多GPU