1. 程式人生 > >IDEA Git Cherry-pick(摘櫻桃) 實現分支的部分提交合併到Master

IDEA Git Cherry-pick(摘櫻桃) 實現分支的部分提交合併到Master

   git cherry-pick可以選擇某一個分支中的一個或幾個commit(s)來進行操作。

             最近同時開發了很多個功能並提交到了dev分支,但是上線的時候有些功能依賴其他的團隊的服務,其他團隊上不了線,導致自己的提交到dev分支的某些功能沒法上線。現在分支上有四五個功能,但是現在只要合併dev中的中的一兩個功能到master。如果直接使用Merge-Changes 會將所有的提交合併到主幹。

             為了在dev的n多次提交裡面把需要上線的程式碼合併到master(下次上線的不合並),我頭大了很多天。問了好幾個同事,他們平時合併都是用的Beyond Compare 對比dev 和master 然後把需要提交的dev中的程式碼一個一個的弄到master裡面,這樣的操作不僅麻煩,而且容易漏檔案。

        我認為idea 和git 既然這麼成熟,肯定有類似這種問題的解決方式。

         後來同事告知了一個方法。Merge-Changes   nocommit 。這樣可以把分支的所有提交下載到本地,然後自己選擇自己需要提交的檔案commit。(如果不選nocommit會自動將所有的dev檔案下載到本地倉庫這樣就不能有選擇的提交了)具體操作方法如:

    1.切換到master分支,然後右擊專案 git-Repository - Merge-Changes  然後 勾選nocommit如下圖。

上面的方法並不像是一個很正規的合併部分檔案的操作。

下面介紹git合併部分分支提交到master的功能(Cherry-pick 摘櫻桃),此功能會根據提交來合併功能。具體操作

1. 選擇專案右擊。git- show history

2.任意選一個提交,右擊選select in git log

3.選擇要合併的提交,右擊選cherry-pick

4.提交檔案。