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

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'

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

相关文章:

  • 【SOC 芯片设计 DFT 学习专栏 -- Scan chain 和 SDFFs及 EDT】
  • sqli-lab靶场学习(八)——Less26-28
  • Android ANR 监控方法与事件分发耗时优化实战
  • vue的 props 与 $emit 以及 provide 与 inject 的 组件之间的传值对比
  • docker修改了daemon.js文件还是下载不了镜像
  • Android 自定义View之底部导航栏
  • LanceDB快速入门之基本操作与API一览
  • 基于VMware的Ubuntu22.04系统安装和配置以及解决Ubuntu共享文件夹无法实现的问题
  • 优化程序执行时间的核心方法与实战策略
  • 机器学习(吴恩达)
  • MinIO的预签名直传机制
  • UI自动化:seldom框架和Selenium
  • MySQL 优化方案
  • [笔记.AI]KAG(知识增强生成 Knowledge Augmented Generation)
  • 解析Doris编译脚本generated-source.sh的逻辑
  • python-53-分别使用flask和streamlit进行向量存储和检索的服务开发实战
  • 算法分享———进制转换通用算法
  • centos8.0系统部署zabbix6.0监控
  • 说说人工智能
  • FPGA 32 ,以太网TCP/IP四层模型:从MII到RGMII的深度解析( TCP/IP传输控制协议 )
  • 蔡达峰:推动食品安全法全面有效实施,为维护人民群众身体健康提供有力法治保障
  • 虚假认定实质性重组、高估不良债权价值,原中国华融资产重庆分公司被罚180万元
  • 新华时评:直播间里“家人”成“韭菜”,得好好管!
  • 重庆党政代表团在沪考察,陈吉宁龚正与袁家军胡衡华共商两地深化合作工作
  • 巴基斯坦称约50名印度士兵在克什米尔实控线丧生
  • 售卖自制外挂交易额超百万元,一男子因提供入侵计算机系统程序被抓