日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git上传分支的原理_几张图让你彻底弄懂git工作流(二) ——git分支

發布時間:2024/7/23 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git上传分支的原理_几张图让你彻底弄懂git工作流(二) ——git分支 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上篇文章已經說了Git簡史以及Git基礎,那么這篇文章簡單總結下Git分支

Git分支

為了理解 Git 分支的實現方式,我們需要回顧一下,

Git保存的不是文件差異或者變化量,而只是一系列文件快照.Git分支分支其實就是從某個提交對象往回看的歷史文字描述

imageGit中的分支,本質上就是個指向master對象的可變指針,master為默認分支,每次提交都會向前移動多個分支指向提交數據的歷史文字描述

imageGit創建一個新分支指針從而創建分支,創建testing命令git branch testingHEAD 指向當前所在的分支文字描述

imageGit因為保存一個名為HEAD的指針,它指向正在工作中本地分支指針

git branch僅是創建新分支,但不會自動切換分支中去(如圖還在master上)HEAD 在你轉換分支時指向新的分支文字描述

image運行git checkout testingHEAD就指向testing分支了每次提交后 HEAD 隨著分支一起向前移動文字描述

image左圖是又提交一次的結果,每次提交后HEAD隨著分支一起向前移動

但master仍指向原來git checkout時所在的commit對象。再次執行git checkout masterHEAD才會指向master

Git—merge分支的合并 — merge #1文字描述

image1. #53是第一滴修補問題的分支

git chackout -b iss53 === git branch iss53+git checkout iss53

2.假如接到緊急任務,這時候就不必花費大力氣來復原這些修改,執行git checkout master創建緊急修補分支git checkout -b hotfix

3.hotfix分支是從master分支所在點分化出來的

image1.測試成功后回到master把它合并起來,然后發布服務器,命令為git checkout master git merge hotfix 合并會出現“Fast forward”的提示

2.因為是master并入hotfix的直接上游,只需master指針右移動(順著走)稱為快進

3.合并之后,master 分支和 hotfix 分支指向同一位置分支的合并 — merge #2文字描述

image1.現在回來處理iss53,完成后合并回master,不同于hotfix,開發歷史從早的地方開始分叉的

2.master->c4,git額外處理為找到共同祖先C2簡單三方合并

image三方合并后的結果重新快照,并自動創建指向它的提交對象C6,可以看到C6有兩個祖先

(git自動創建了一個包含了合并結果的提交對象,自己裁決哪個共同祖先才是最佳合并基礎,這和 CVS及Subversion(1.5 以后的版本不同)

Git—rebase分支的合并 — rebase #1文字描述

image把一個分支中的修改整合到另一個分支的辦法有兩種:merge 和 rebase(衍合)

如左圖:分叉到兩個不同分支,又各自提交了更新

image除了merge兩個分支最新的公共祖先三方合并

另外就是C3的變化補丁在C4中重新打一遍->衍合

有了衍合可以把分支中提交的變化移到另一個分支重放一遍

(原理:回到共同祖先,根據當前分支(ex··)提交的對象C3,生成補丁然后以master最后提交的C4為新的出發點,逐個應用之前準備好的補丁文件,最后會生成一個新的合并提交對象(C3'),master成直接下游)

image回到master進行快進合并分支的合并 — rebase #2文字描述

image從一個特性分支里再分出一個特性分支的歷史

服務器端代碼添加功能創建server提C3C4->從C3增加client分支并提C8C9->回server提C10

image將特性分支上的另一個特性分支衍合到其他分支

一次軟件發布中,我們決定先把客戶端的修改并到主線中,而暫緩并入服務端軟件的修改

git rebase --onto master server client

取出 client 分支,找出 client 分支和 server 分支的共同祖先之后的變化,然后把它們在 master 上重演一遍

image快進 master 分支,使之包含 client 分支的變化

git checkout master

git merge client

image在 master 分支上衍合 server 分支

git rebase [主分支] [特性分支] 命令會先取出特性分支 server,然后在主分支 master 上重演

git rebase master server

image最終的提交歷史

快進主干分支 master

git checkout master && git merge server

現在 client 和 server 分支的變化都已經集成到主干分支來了,可以刪掉它們了

git branch -d client

git branch -d serverGit—rebase風險分支的合并 — rebase的風險文字描述把衍合當成一種在推送之前清理提交歷史的手段,而且僅僅衍合那些尚未公開的提交對象,就沒問題。如果衍合那些已經公開的提交對象,并且已經有人基于這些提交對象開展了后續開發工作的話,就會出現叫人沮喪的麻煩

Git分支—遠端同步git分支 — 和遠端同步文字描述

image如左圖箭頭中命名所示即可與遠端同步

作者:Li_小點

鏈接:https://www.jianshu.com/p/ca76937b174f

總結

以上是生活随笔為你收集整理的git上传分支的原理_几张图让你彻底弄懂git工作流(二) ——git分支的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。