前言
當 branch 一多,我們自然的就會產生非常多不同的 branch,
有時候雖然還沒有 merge,但別人寫了一個感覺很好用的 function,
這時我們要怎麼在「自己開發到一半的情況」,「又直接去拿別人的東西來用呢」?
自己的理解方式:跟 merge 很像,但 cherry-pick 目的不在 merge,而是臨時借東西來用。
用法
我們可以透過以下指令,去任何一個 commit/branch 拿東西
git cherry-pick <commit id> # (小技巧:不用打完,只要沒有重複,至少打四位都能智慧配對)
實驗與示範
這裡我們來實驗一下
我建立了一個文件 test.txt,並依序 commit 了三次,commit message 對應內容。
commit 1
commit 2
commit 3
- commit message 如下:
假設今天換我在另外一個 test_branch 開發,
我寫下了
commit 1
commit 4
- 此時是這樣
但我覺得 commit 2 很好用,想借來用一下,
這時我們就可以 git cherry-pick <commit 2 的 id>,
- 如果照我的例子而言,就是:
註:任何的 git log 都是越靠近現在越下面,
自己的記法:「太久以前的 git 就算顯示會被卷上去,我們基本上也不太會在意,因為我們幾乎只看最近的。」
- 借一下 commit 2 來用
git cherry-pick 8ab9 # (小技巧:不用打完,只要沒有重複,至少打四位都能智慧配對)
到這邊已經達到我們想要的效果囉!!!我們拿到了想要的東西!!!
此時可能會 confilct 的原因也很好理解,
你寫的 commit 4 跟 commit 2 都要搶第二行,
git 也不知道要怎麼幫你組合順序,請你自己組合。
如果是借 function 來用,這時你應該已經拿到了!可以放到想放的地方!
而且正常來說應該順序就會影響邏輯。
組合後就可以 commit 新的組合版囉!





