在實(shí)際的項(xiàng)目開(kāi)發(fā)中(使用Git版本控制)查近,在所難免會(huì)遇到?jīng)]有切換分支開(kāi)發(fā)、需要在另一個(gè)分支修改bug然后合并到當(dāng)前分支的情況授翻。之前遇到這種第一反應(yīng)就是將分支合并過(guò)去來(lái)解決問(wèn)題漾狼。如果你那些提交當(dāng)中也穿插了其他人的提交而且他們的提交不可以合并到另一個(gè)分支肠阱,那么使用分支的合并將明顯變得困難。下面分享給大家一個(gè)非常好用Git的命令Cherry-Pick來(lái)處理這些情況街佑,從而提高開(kāi)發(fā)的效率谢翎。
What is Cherry-Pick ?
git Cherry-Pick命令可以選擇某一個(gè)分支中的一個(gè)或幾個(gè)commit(s)來(lái)進(jìn)行操作。你可以理解merge的個(gè)性定制版本沐旨,哈哈~~
How use Cherry-Pick 岳服?
假設(shè)我們有兩個(gè)分支,一個(gè)是master分支希俩,一個(gè)是從master分支Git Commit Log為“修改側(cè)欄內(nèi)容”新建出來(lái)的dev分支吊宋。
現(xiàn)在需要將master分支下的git Log commit "修改側(cè)欄的點(diǎn)擊跳轉(zhuǎn)方式"合并到dev分支。也許你可能想到將這個(gè)Log上面的Logs先Revert颜武,然后再將master分支合并到dev分支璃搜。下面記錄一下怎么使用Cherry-Pick來(lái)合并一個(gè)或者多個(gè)提交。
- 先將當(dāng)前分支切換到dev分支鳞上。
-
打開(kāi)master的所有提交Log,找到需要合并到dev分支的提交这吻,這里我們找到“修改側(cè)欄的點(diǎn)擊跳轉(zhuǎn)方式”這個(gè)提交,然后點(diǎn)擊右擊選擇菜單彈出Cherry-Pick命令篙议。
-
接著唾糯,IDE會(huì)彈出熟悉的提交提示框架,這時(shí)我們點(diǎn)擊Commit或者Commit and Push...就可以將需要合并的提交合并到dev分支了鬼贱。
這里我選擇了Commit and Push...移怯。查看dev分支的Log可以看到那個(gè)提交已合并到dev。
Note
當(dāng)你需要將某些提交合并到另一分支的時(shí)候这难,一定一定一定要按提交的順序進(jìn)行合并舟误,不然會(huì)導(dǎo)致某些文件發(fā)生沖突。這也是我實(shí)際項(xiàng)目中踩過(guò)的坑姻乓。
End
- 當(dāng)你的需求還沒(méi)有完成的時(shí)候嵌溢,其他人應(yīng)該切換到另一分支開(kāi)發(fā)的時(shí)候,你可以先在當(dāng)前分支繼續(xù)開(kāi)發(fā)完蹋岩,然后再選擇Cherry-Pick命令合并過(guò)去就可以了赖草。
- 當(dāng)你需要將某個(gè)人的commits合并到另一開(kāi)分時(shí)候,可以選擇Cherry-Pick命令剪个。(在實(shí)際的項(xiàng)目開(kāi)發(fā)中秧骑,在所難免有人會(huì)提交錯(cuò)分支)
- 當(dāng)你切換到某條分支修改Bug后,需要將修改提交合并另一分支,可以選擇Cherry-Pick命令腿堤。
這是一個(gè)非常好用阀坏、有趣的命令,它提高了我的開(kāi)發(fā)效率~~在此笆檀,分享給大伙忌堂,希望可以幫忙到更多的人!
點(diǎn)擊關(guān)注我
License
Copyright 2017 zhonghanwen
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.