1.Cherry Pick与Create Patch的区别
Cherry Pick與Create Patch的區別
- 結論
- 實驗
- 場景1:應用時無沖突
- 場景2: 應用時產生沖突
- 使用cherry pick
- 使用patch
- 場景3:產生沖突,并且有其他文件的變更
- 原理
結論
1.應用無沖突時cherry pick與patch一樣,只應用變更的內容;
2.區別在于cherry pick解決沖突時相會對沖突文件進行分支合并(每個commit的引用都可當作分支),而patch只應用變更的內容。
2.1.cherry pick解決沖突時只引用提交中的文件內容,不是全部分支合并。
我們來進行三組實驗,分別驗證這3個結論。
實驗
場景1:應用時無沖突
從master上切出兩個分支master-01,master-02。
目標:master-01分支應用master-02的一個提交
步驟:
在master-02分支上提交兩次。
在master-01分支上引用master-02的第二次提交,發現引用的是第二次提交的內容,第一次提交的內容沒有被引用。驗證了論點1
【master-02分支的兩次提交】:
【master-01 cherry pick之后:】
場景2: 應用時產生沖突
目標:master-03分支應用master-02的一個提交
步驟:
master-03 提交一個更改,如圖1
master-02 提交一個更改(這個更改不想被master-03引用),在與master-03提交的同一處再次提交了一個更改(制造沖突),如圖2
圖1:
圖2:
使用cherry pick
在master-03分支上使用 mater-02的最后一次更改
結果:解決沖突時會合并文件。把整個文件的更改都引用過來了。
使用patch
場景3:產生沖突,并且有其他文件的變更
從master上切出兩個分支master-01,master-02。
目標:master-01分支應用master-02的一個提交
步驟:
在master-01分支上進行一次提交;
在master-02分支上提交兩次;
在master-02分支上制造一個與master-01分支產生沖突的提交;
在master-01分支上引用master-02的第三次提交,發現沖突時只引用當前提交包含的文件,符合預期,驗證了論點3
【master-01進行一次提交】:
【master-02分支的三次提交】:
【master-01 cherry pick之后:】
原理
cherry pick引用的是一個commit,解決沖突時會將包含的文件當作分支進行合并。
patch只是一個提交的變更記錄,解決沖突時會當作本地修改進行合并。
總結
以上是生活随笔為你收集整理的1.Cherry Pick与Create Patch的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今日报错系列:没有找到 或上一个增量链接
- 下一篇: View框架浅析