git筆記之cherry-pick的使用
- 2019 年 11 月 5 日
- 筆記
記下git的cherry-pick的使用
用途
獲取某一個分支的單筆提交,並作為一個新的提交引入到你當前分支上。 當我們需要在本地合入其他分支的提交時,如果我們不想對整個分支進行合併,而是只想將某一次提交合入到本地當前分支上時使用。
# 基本語法
git cherry-pick [<options>] <commit-ish>... 常用options: --quit 退出當前的chery-pick序列 --continue 繼續當前的chery-pick序列 --abort 取消當前的chery-pick序列,恢復當前分支 -n, --no-commit 不自動提交 -e, --edit 編輯提交信息
cherry-pick用於把A分支的一次提交,增加到B分支上。 從兩個分支最後一個相同的版本狀態開始cherry-pick較不容易衝突。
根據commit-id查找所屬分支,並把分支上該commit-id對應的提交內容增加到當前分支。
git cherry-pick commit-id
把該分支的最後一次提交增加到當前分支
git cherry-pick branchName
出現衝突時,放棄操作
git cherry-pick --abort
# 成功&衝突
比如dev分支按照時間順序有3次提交,對應commit-id是commit1、commit2、commit3。 當前在test分支,test分支最後一次提交與commit1時的狀態一致。
# 衝突的情況
- 如果commit2和commit3都修改了同一文件,那麼cherry-pick commit3會出現衝突。
- 如果commit3修改的文件,在commit1版本中不存在(說明是commit2中增加的),那麼會出現衝突。 ↓ 當前分支中文件的狀態與要cherry-pick的commit中文件狀態最多相差一次提交。
# 成功的情況
- git cherry-pick commit2
- 當commit3中修改的文件,在commit2中都沒有修改時,git cherry-pick commit3