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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM