一般我們使用衍合的目的,是想要得到乙個能在遠端分支上乾淨應用的補丁 — 比如某些專案你不是維護者,但想幫點忙的話,最好用衍合:先在自己的乙個分支裡進行開發,當準備向主專案提交補丁的時候,根據最新的 origin/master 進行一次衍合操作然後再提交,這樣維護者就不需要做任何整合工作(譯註:實際上是把解決分支補丁同最新主幹**之間衝突的責任,化轉為由提交補丁的人來解決。),只需根據你提供的倉庫位址作一次快進合併,或者直接採納你提交的補丁。
在工作中我們一般會有乙個主分支和許多開發需要的其它分支,
提交補丁的人在編寫補丁的過程中也提交合併了數次**
master分支上的提交是維護者的提交,分支1和分支2上是提交補丁的人在編寫補丁時進行的提交,這是我們合併一下將分支2的提交合併到分支3上做個比較
此時分支2上的b提交和分支3上的b提交的hash值相同,是相同的一次提交
下面我們進行衍合
從分支1向分支2衍合,得到現在的結果,衍合的過程中,會比較之前的每一次提交的hash值是否相同,只要不相同就會保留在分支2所有提交的前面,若相同就會進行衝突解決,衍合後分支2上的b提交的hash值就會發生改變,它不再和分支3上的b提交是同一次提交,前面提到過,衍合分支的目的是將整合工作交由提交補丁的人來解決,現在就達到了這一目的
而如果之前的b提交就是從master分支上轉殖下來的
此時經過一系列操作後,提交補丁的人準備將分支2提交到master主分支上,這時再提交就會出現這樣的情況
經過衍合後,b提交的hash值已經發生變化,所以分支上會出現兩個b提交
git分支的衍合
把乙個分支中的修改整合到另乙個分支的辦法有兩種 merge和rebase,當開發程序分叉到兩個不同的分支,又各自提交了更新。最容易的整合分支的方法是merge,它會把兩個分支最新的快照以及兩者的共同祖先進行三方合併,合併的結果是產生乙個新的提交物件。其實還有另外乙個選擇,可以在乙個分支裡發生的變化補...
git之學習要點 遠端分支與衍合
先看圖,不說話 git fetch origin 之後 注意 git fetch 命令會更新 remote 索引。看完圖之後,以下語法要搞清楚 推送本地serverfix serverfix origin git push origin serverfix 通過此語法,你可以把本地分支推送到某個命名...
git學習五(分支的衍合rebase)
它的原理是回到兩個分支最近的共同祖先,根據當前分支 也就是要進行衍合的分支experiment 後續的歷次提交物件 這裡只有乙個 c3 生成一系列檔案補丁,然後以基底分支 也就是主幹分支master 最後乙個提交物件 c4 為新的出發點,逐個應用之前準備好的補丁檔案,最後會生成乙個新的合併提交物件 ...