比方說git的樹顯示爲:應用從以前的一個git補丁提交到以後提交
1 ----> 2 ----> 3 -----> 4(HEAD/MASTER)
\
\ (PATCH)
--2A->
,我有一個補丁是2的DIFF和2A增加了一個功能。
有沒有一種巧妙的方式將這個補丁應用到最新的提交? 假設我擁有的是補丁文件和主線的git repo。
比方說git的樹顯示爲:應用從以前的一個git補丁提交到以後提交
1 ----> 2 ----> 3 -----> 4(HEAD/MASTER)
\
\ (PATCH)
--2A->
,我有一個補丁是2的DIFF和2A增加了一個功能。
有沒有一種巧妙的方式將這個補丁應用到最新的提交? 假設我擁有的是補丁文件和主線的git repo。
由於TheCodeArtist points out,如果你有一個補丁文件,你可以簡單地使用git apply <patch>
應用它:
git checkout master
git apply <patch>
按照official Linux Kernel Git documentation for git apply
:
NAME
說明git-適用 - 對文件和/或索引應用補丁
讀取供給diff的輸出(即「一個補丁」)並將其應用於文件。
此命令應用修補程序,但不創建提交。使用git-am(1)來創建由git-format-patch(1)生成的補丁和/或通過電子郵件接收的補丁。
先試試簡單的方法。如果你已經在主,
git apply PATCH
如果補丁不適用於HEAD /主,試試這個:
git checkout 2
git apply PATCH
git tag patch-applied
git checkout master
git cherry-pick patch-applied
OR
git checkout 2
git apply PATCH
git tag patch-applied
git checkout master
git merge patch-applied
對於這兩個融合和底墊它可能發生,你需要解決衝突。 rebase給你一個線性歷史,合併給你一個分支的歷史。
您可以使用git lola查看您創建的歷史記錄。
編輯我的答案,如果你這樣做,你需要櫻桃選擇而不是rebase。 – donquixote
你試過'git am'或'git apply '?... –
TheCodeArtist