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