Git 合併指定的commit

喂喂喂不要這樣發表於2018-04-26

Git命令

git cherry-pick <commit id>
複製程式碼

使用背景

  • 使用者中心需要優化,在分支daily/1.3.0上開發。
  • 在優化的過程中提取了公共部分獨立成檔案或模組,提交到了daily/1.3.0上。此時分支上即有公共部分,又有此次優化的功能點。
  • 突發奇想,想要對別的地方進行優化、抽象別的方法,但是又不想影響此次的功能,即不想也不能提交在daily/1.3.0上。
  • 如果基於daily/1.3.0新建分支的話,除公共優化部分還會帶來多餘的功能點;但是基於乾淨分支新建一個分支,優化的歷史記錄難道要一個一個拷貝貼上????
  • 還好,在優化的時候,抽象方法相對功能點獨立,commit比較乾淨

目的

新建一個乾淨的優化分支,把daily/1.3.0關於公共優化部分的commit搞過來

工具

WebStorm

步驟

  1. 基於master或別的乾淨、可上線的分支新建並切換至分支refine/routes-common
  2. 開啟WebStorm下的Version Control,選擇Log選項卡,Branch選擇daily/1.3.0

Version Control: Log選項卡

3.選擇需要合併的commit, 右鍵->cherry-pick (之所以不使用命令列是多選commit的時候比較麻煩)

選擇需要cherry-pick的分支

  1. 像普通提交一樣commit,如果有衝突,像普通解決衝突一樣解決
    commit

其實

如果只涉及檔案變動,也可以使用git checkout來合併資料夾

參考

git cherry-pick 小結

相關文章