1. 程式人生 > 實用技巧 >git cherry-pick 教程

git cherry-pick 教程

轉自:http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html

對於多分支的程式碼庫,將程式碼從一個分支轉移到另一個分支是常見需求。

這時分兩種情況。一種情況是,你需要另一個分支的所有程式碼變動,那麼就採用合併(git merge)。另一種情況是,你只需要部分程式碼變動(某幾個提交),這時可以採用 Cherry pick。

一、基本用法

git cherry-pick命令的作用,就是將指定的提交(commit)應用於其他分支。


$ git cherry-pick <commitHash>

上面命令就會將指定的提交commitHash

,應用於當前分支。這會在當前分支產生一個新的提交,當然它們的雜湊值會不一樣。

舉例來說,程式碼倉庫有masterfeature兩個分支。


    a - b - c - d   Master
         \
           e - f - g Feature

現在將提交f應用到master分支。


# 切換到 master 分支
$ git checkout master

# Cherry pick 操作
$ git cherry-pick f

上面的操作完成以後,程式碼庫就變成了下面的樣子。


    a - b - c - d - f   Master
         \
           e - f - g Feature

從上面可以看到,master分支的末尾增加了一個提交f

git cherry-pick命令的引數,不一定是提交的雜湊值,分支名也是可以的,表示轉移該分支的最新提交。


$ git cherry-pick feature

上面程式碼表示將feature分支的最近一次提交,轉移到當前分支。

二、轉移多個提交

Cherry pick 支援一次轉移多個提交。


$ git cherry-pick <HashA> <HashB>

上面的命令將 A 和 B 兩個提交應用到當前分支。這會在當前分支生成兩個對應的新提交。

如果想要轉移一系列的連續提交,可以使用下面的簡便語法。


$ git cherry-pick A..B 

上面的命令可以轉移從 A 到 B 的所有提交。它們必須按照正確的順序放置:提交 A 必須早於提交 B,否則命令將失敗,但不會報錯。

注意,使用上面的命令,提交 AB將不會包含在 Cherry pick 中.