假设当前分支为master,当前的commit情况如下,现在需要删除commit_id_2和commit_id_4:

commit_id_1
commit_id_2
commit_id_3
commit_id_4
commit_id_5
....

一、创建新的分支,用于reset操作

git checkout -b develop
git push orign -u develop

二、在新分支develop上,将commit重置到commit_id_4之前的提交

git reset --hard <commit_id_5>

三、提交新分支,覆盖之前的commit信息

git push orign HEAD --force

四、按原有的顺序恢复不需要删除的commit,然后提交

git cherry-pick commit_id_3
git cherry-pick commit_id_1
git push orign develop

五、删除原有的master分支,从develop中checkout一个新分支作为master

git push orign --delete master
// 或者 git push orign :master
// 注意:master一般是默认分支,你需要先将默认分支设置为develop才能删除 git checkout -b master
git push orign -u master
// 最后将master重新设置为默认分支

操作比较繁琐,但是比较保险,如果有什么好方法,可以分享一下。。

最新文章

  1. 国内app快速生成平台对比
  2. Java多线程19:定时器Timer
  3. perspective属性
  4. 攻城狮在路上(壹) Hibernate(八)--- 映射Hibernate组成关系
  5. BZOJ 1901 Zju2112 Dynamic Rankings ——整体二分
  6. c++ 递归斐波那契算法及时间复杂度
  7. 最严谨的校验email地址的正则表达式
  8. C# 获取文件MD5校验码
  9. Origami
  10. WordPress wp-includes/functions.php脚本远程任意代码执行漏洞
  11. SQL Database学习笔记
  12. 在Prefetcher中取消robots.txt的限制
  13. java整合flex
  14. lr_abort()、exit(-1) 和 return-1之间的区别
  15. 循环神经网络(RNN)模型与前向反向传播算法
  16. 项目实战13—企业级虚拟化Virtualization-KVM技术
  17. VSTO中Word的查找方式
  18. 如何在eclipse中对项目进行重新编译
  19. Python tesserocr模块使用示例
  20. linux ssh keys

热门文章

  1. OS---外存分配方式
  2. if else 选择机构 _多重if选择机构_if选择结构嵌套(综合练习题——code)
  3. 还是畅通工程(prim和kruskal)
  4. contextMenu的使用
  5. (转)iptables简介
  6. jQuery源代码学习笔记_01
  7. linux下追查线上问题常用命令
  8. Day4下午
  9. ViewData、ViewBag和TempData比较
  10. ubuntu .net core The specified framework &#39;Microsoft.NETCore.App&#39;, version &#39;1.0.1&#39; was not found