1. 程式人生 > >git合併——衍合於挑揀(cherry-pick)——只合並某個commit

git合併——衍合於挑揀(cherry-pick)——只合並某個commit

衍合與挑揀(cherry-pick)的流程

一些維護者更喜歡衍合或者挑揀貢獻者的程式碼,而不是簡單的合併,因為這樣能夠保持線性的提交歷史。如果你完成了一個特性的開發,並決定將它引入到主幹程式碼中,你可以轉到
那個特性分支然後執行衍合命令,好在你的主幹分支上(也可能是develop分支之類的)重新提交這些修改。如果這些程式碼工作得很好,你就可以快進master分支,得到一個線性的提交歷史。
另一個引入程式碼的方法是挑揀。挑揀類似於針對某次特定提交的衍合。它首先提取某次提交的補丁,然後試著應用在當前分支上。如果某個特性分支上有多個commits,但你只想引入其中之一就可以使用這種方法。也可能僅僅是因為你喜歡用挑揀,討厭衍合。假設你有一個類似圖 5.26的工程。

如果你希望拉取e43a6到你的主幹分支,可以這樣

$ git cherry-pick e43a6fd3e94888d76779ad79fb568ed180e5fcdf
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-)

這將會引入e43a6的程式碼,但是會得到不同的SHA-1值,因為應用日期不同。現在你的歷史
看起來像圖 5.27.

現在,你可以刪除這個特性分支並丟棄你不想引入的那些commit。