git合並分支上指定的commit


merge 能夠勝任平常大部分的合並需求。但也會遇到某些特殊的情況,例如正在開發一個新的功能,線上說有一個緊急的bug要修復。bug修好了但並不像把仍在開發的新功能代碼也提交到線上去。這時候也許想要一個只合並指定某些 commit 的功能。
假設分支結構如下:
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
                  \
                76cada-62ecb3-b886a0[feature]
再假設 62ecb3 的提交修復了bug,這時候可以用
cherry pick 合並單個 commit
具體操作:
git checkout master
git cherry-pick  62ecb3
就這么簡單。 62ecb3 已經應用在 master 上了(作為一個新的commit)。

cherry pick 連續多個commit
cherry pick 雖好,但一次只能合並一個commit。合並多個就要用到 rebase 了。再次假設想要把 76cada 和 62ecb3 合並到 master 上。
操作:
git checkout -b newbranch 62ecb3
git rebase —onto master 76cada^
76cada^ 表示從 76cada 的 commit 開始合並(作為新的commit)。這樣就完成了 76cada 到 62ecb3 合並到 master。


免責聲明!

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



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