久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Git的研發(fā)應用場景是怎樣的

143次閱讀
沒有評論

共計 2043 個字符,預計需要花費 6 分鐘才能閱讀完成。

Git 的研發(fā)應用場景是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Git 誕生于 2002 年,由 Linux 之父 Linus Torvalds 和他的團隊開發(fā)并不斷完善,它秉承了 Linux 的開源精神,為廣大研發(fā)團隊帶來了非常棒的版本控制體驗。下面立足 Git 的工作原理,深入探討各種研發(fā)場景中工作流等問題。

Git 工作模式

代碼提交過程

一次修改被成功提交到遠端倉庫會歷經四個階段,1 本地工作區(qū) - 2 緩存區(qū) - 3 版本庫 - 4 遠端版本庫,通過執(zhí)行相應的 Git 命令,文件在這四個區(qū)域跳轉,并呈現不同的狀態(tài):

1. 已修改(modified):包括三種文件,新增文件,被修改的文件,被刪除的文件

2. 已暫存(staged):對已修改的文件執(zhí)行 git add 或 git rm 操作,文件就變成已暫存狀態(tài),進入暫存區(qū)。暫存區(qū)實際上就是一個文件索引目錄樹,記錄了所有文件名、文件狀態(tài)信息,它已索引的方式建立了文件名和文件內容(在對象庫.git/objects 中保存)的對應關系。

3. 已提交(committed):對已暫存的文件執(zhí)行 git commit 操作,文件就變成已提交狀態(tài),進入本地版本倉庫。

4. 已上傳:對已提交的文件執(zhí)行 git push 操作,文件就變成已上傳狀態(tài),進入遠端版本倉庫。

Git 如何記錄每次提交

我們思考一下,版本控制系統(tǒng)應該如何記錄每次提交呢?正常的思維肯定是記錄“差異”(delta),也就是前后兩個版本中文件內容的不同,確實大多數版本控制系統(tǒng)是這么做的,比如我們所熟悉的 CVS,SVN。但是,Git 卻不這樣!每次提交更新時,Git 會對全部文件作一個快照(snapshot),并保存指向這次快照的索引。

這種保存方式帶來很多好處,切換版本時,直接引用指向目標版本的索引即可,不需要像差異存儲那樣,需要版本之間的 merge,速度會快很多,更重要的是,為后文所講到的輕量級分支切換提供了前提條件。

Git 分支

Git 新建分支的本質就是創(chuàng)建一個指向最后一次提交的可變指針,所以,Git 分支的創(chuàng)建不是復制版本庫的內容,僅僅是新建了一個指針,它以 40 個字符長度 SHA- 1 字串形式保存在文件中,這難以想象的輕量級就是源于“快照”保存的版本設計理念。

Git 工作流

什么是 Git 工作流?你可以理解為代碼管理的分支策略。這里從典型的 GitFlow 工作流出發(fā),配合我正在使用的代碼托管平臺 (華為軟件開發(fā)云),給大家詳細講解工作流是如何服務于項目流程管理和團隊協同開發(fā)。

?master:主線分支,版本有較強穩(wěn)定性,供生產環(huán)境部署使用,這個分支只能從其它分支合并,不能在這個分支上直接提交修改。

新建分支:

在開發(fā)云界面輸入新分支名,并選擇從哪個分支檢出即可。

?develop:主開發(fā)分支,用來集成測試最新合入的開發(fā)成果,包含要發(fā)布到下一個 Release 的代碼。

?feature:特性分支,每個特性一個分支,用于開發(fā)人員提交代碼并進行自測。一旦開發(fā)完成,我們合并回 Develop 分支進入下一個 Release。

?hotfix:補丁分支,生產環(huán)境發(fā)現新 Bug 時創(chuàng)建的臨時分支,問題驗證后,合并到 Master 和 Develop 分支,所以 Hotfix 的改動會進入下一個 Release

?release:發(fā)布分支,發(fā)布新版本時,基于 Develop 分支創(chuàng)建,發(fā)布完成后,合并到 master 和 develop 分支。

各個分支之間的關系可以從開發(fā)云的“倉庫網絡”中查看:

優(yōu)點:項目管理流程明確

缺點:相對復雜,需要同時維護兩個長期分支,不適合網站項目。

分支合并

無論哪種工作流都會涉及到分支合并(把一個分支中的修改整合到當前分支),主要有兩種方法:三方合并(merge)和衍合(rebase)。我們通過對同一種場景進行不同操作體會兩種合并方法的區(qū)別。

場景:master 分支新增了 C4 節(jié)點,hotfix 分支新增了 C3 節(jié)點,現將 hotfix 分支合并到 master 分支:

1. 三方包括 hotfix 新增節(jié)點 C3,master 新增節(jié)點 C4,以及兩者的共同祖先節(jié)點 C2。這種合并操作簡單,但新增合并節(jié)點 C5,形成了環(huán)形,版本記錄可讀性差。

a)PC 端命令操作方式:

#git checkout master

#git merge hotfix

b) 開發(fā)云平臺頁面操作:

第一步:

第二步:

2. 衍合先將 master 分支新增節(jié)點 C4 以補丁形式保存在.git/rebase 目錄中,然后同步 hotfix 分支最新代碼,再應用補丁 C4’。

#git checkout master

#git rebase hotfix

沖突解決

類型一:兩個合并分支修改了同一行代碼

解決方法:

1. 分析哪種修改方法正確,手動合并;

2. 提交修改。

類型二:文件被重命名為不同的名字

解決方法:

1. 確認哪個名字是正確的,刪除錯誤的;

2. 提交修改。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業(yè)資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計2043字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 濮阳县| 孝义市| 梅州市| 成武县| 洪江市| 团风县| 和顺县| 辽阳市| 丰顺县| 佛学| 拉孜县| 天津市| 农安县| 保德县| 邻水| 石棉县| 开江县| 灌云县| 红原县| 科技| 乐昌市| 大关县| 凌源市| 肥西县| 炎陵县| 那曲县| 宣城市| 建始县| 义马市| 安达市| 盈江县| 雷波县| 安国市| 仙居县| 万荣县| 安塞县| 弋阳县| 搜索| 竹山县| 宁晋县| 八宿县|