git cherry pick教程


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

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

cherry-pick

假如現在有兩個分支v1.0,v1.1。
v1.0有如下commit:

commit 4d3b38f3e6b9f49776f6e2d2861f0425e10df8d6 (HEAD -> v1.0) Author: bin <bininhere@163.com> Date: Tue Mar 19 10:33:43 2019 +0800 feature5 commit 65ad383c977acd6c7e7bed486bbf3631851a9eda Author: bin <bininhere@163.com> Date: Tue Mar 19 10:30:44 2019 +0800 feature4 commit a2a438f2652166f13a6a2aa36f447968fff3b15d Author: bin <bininhere@163.com> Date: Tue Mar 19 10:30:09 2019 +0800 feature3 

現在v1.1需要合並feature4的功能,但不能合並feature3,feature5,怎么辦?
把代碼復制過來嗎?不!用cherry-pick

git cherry-pick  65ad383c977acd6c7e

如果文件有沖突,cherry-pick 會中斷,
你解決沖突后,使用git add添加沖突文件,使用git cherry-pick --continue完成cherry-pick操作。
或者使用git cherry-pick --abort中斷操作。

如果你cherry-pick的是別人分支的commit,可能會遇到錯誤fatal: bad object ...,那是因為git cherry-pick是本地特性,本地要有這個commit才可以被git cherry-pick。如果沒有這個commit id,就會出現這個錯誤。


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM