2013年4月22日 星期一

git 的 cherry-pick

不是很確定文,只是隨手紀錄一下.... ,
可以忽略此篇文章,若有寫錯煩請糾正我一下,感謝!

cherry-pick 的定義是:Apply the changes introduced by some existing commits 

或者說...只合併指定的 commit
可以選擇某一個branch(分支)的一個或好幾個commit(s)操作
或者說...針對已經存在的commit 進行再次提交

講白話一點就是比方說我想要merge某些特定的commits從一個branch到另外一的branch,會這樣做是因為我希望只有某些特定修改的項目要merge,而剩下的就留在原來的地方,可能是我不需要上那個功能等等。


假設有兩個branch(staging, development)
在沒有做任何修改是這樣 :


A-B  staging
       \
        C-D-E-F-G  development


然後我新增了兩次 commit
分別是 H 跟  I 到 development 環境,就會變成:

A-B  staging
       \
        C-D-E-F-G-H-I  development


接下來可能因為專案的需要我必須只上H,跟I到staging的branch
其他的部分留在development,這時可以用cherry-pick
cherry是櫻桃的意思
這時候的櫻桃就是指 H,跟 I 了 ,把他pick起來送到staging這個branch

首先先切換到staging:
$ git checkout staging

然後cherry-pick H,跟I :
$ git cherry-pick H
$ git cherry-pick I
如果當初推的順序是先H再I,cherry-pick也要照這個順序
cherry-pick的行為有點類似merge

然後就可以push了

如果是使用cherry-pick 後不用 commit
因為對cherry -pick來說就是一次新的commit

但若使用cherry-pick -n(一次合併好幾個) 後要重新 commit



希望我有機會實作到這個部分再來寫更多的筆記。

參考:
Git 初學筆記- 指令操作教學| Tsung's Blog
Cherry-Picking specific commits from another branch


沒有留言:

張貼留言

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...