zoukankan      html  css  js  c++  java
  • git 删除某一次提交

    多分支开发中误merge其他分支,且之后又有新commit

      哈哈哈,是否感到进退两难,生无可恋...

    分支 master、release、dev_xxx,dev_yyy四个分支,master线上分支,release测试环境分支,dev_xxx,dev_yyy开发分支

       场景1:  dev_xxx要合并到master,突然发现commit中有一个merge release,而这个merge中包含dev_yyy的代码,而dev_yyy还不能上线

       解决办法: git cherry-pick <commitHash # 将指定的提交(commit)应用于其他分支

    eg: dev_xxx上的 commit 记录A,B,C 

    git checkout master      #首先切到要合并的分支上
    git cherry-pick  A      #把dev_xxx上的A合并到master
    git cherry-pick  A..C     #把dev_xxx上的B,C合并到master 
    git cherry-pick  A^..C    #把dev_xxx上的A,B,C合并到master 

        场景2:  dev_xxx合并到了master,突然发现commit中有一个merge release,而这个merge中包含dev_yyy的代码,而dev_yyy还不能上线

        解决办法:  git rebase -i <commitHash>

    eg:master上有 A1-B1-A2 三个提交,要删除B1

      git rebase -i A1 #这里看到的是 A1之后的提交记录

    按字母I键进入编辑模式,将需要删除的commit的pick改为drop,然后按esc退出编辑,:wq保存,就会删除提交记录B1

    git rebase -i  #也经常用于可合并多个提交记录,用法就是把 pick 改成 s, “s” 为 “squash” 的缩写

    不过,使用这个命令与远程端同步的时候就需要用  git push -f

      

  • 相关阅读:
    志愿者招募 [NOI2008] [鬼畜网络流]
    莫队入门
    分块入门
    高速公路 [HAOI2012] [线段树]
    游历校园 [COGS 614] [欧拉图]
    网络吞吐量 [CQOI2015] [网络流]
    LeetCode 27. Remove Element
    LeetCode 26. Remove Duplicates from Sorted Array
    LeetCode 21. Merge Two Sorted Lists
    LeetCode 20. Valid Parentheses
  • 原文地址:https://www.cnblogs.com/xbblogs/p/14236337.html
Copyright © 2011-2022 走看看