華為軟件開發(fā)云配置管理?服務(wù)和Github是國內(nèi)外比較有代表性的代碼托管平臺,它們以git作為版本管理工具,使項(xiàng)目中身處各地的人員可以協(xié)同工作,主要操作涉及倉庫、分支、提交、pull request等知識。本文將講述它們的操作和區(qū)別。
Github介紹
一.注冊
填寫個人資料,郵箱激活。
二.倉庫
1.倉庫類型
私有倉庫:每月繳納7美元,后期可以隨時調(diào)整成其它免費(fèi)的公共倉。
公有倉庫:免費(fèi),所有人可見。

2.新建倉庫
一個倉庫通常用于單個工程,倉庫可以包含文件夾,文件,圖片,視頻,表格等任何項(xiàng)目所需資料。Github在新建項(xiàng)目時可以選擇同時創(chuàng)建README文件或license文件。
(1)在網(wǎng)頁的右上角,點(diǎn)擊頭像旁邊的加號,選擇“New repository”。
(2)給倉庫命名為“hello word”
(3)可以寫一個簡短的項(xiàng)目描述
(4)選擇“Initialize this repository with a README”
(5)點(diǎn)擊“Create repository”
優(yōu)點(diǎn):
a)創(chuàng)建時可以選擇gitignore類型,因?yàn)樵诠こ叹幾g過程中,會生成一些中間文件,或者項(xiàng)目中的一些文件是不需要進(jìn)行版本管理的,這些文件對Github來講是透明的,若gitignore選擇了C項(xiàng)目,.lib .so .exe等都被忽略了。
b)Settings中可以對倉庫重新命名

三.分支
分支是在同一倉庫不同版本上工作的方法。倉庫默認(rèn)有一個master分支,一般用作生產(chǎn)環(huán)境。當(dāng)從master分支新建一個分支,意味著在這個時間點(diǎn)對master分支做了一個拷貝或者說快照,其他人對master分支做的改動不會影響到新分支。
在Github上,開發(fā)者,設(shè)計(jì)者使用多個分支去修正bug和需求開發(fā),驗(yàn)證OK后,最后合并到master生產(chǎn)分支。
1.新建分支
(1)進(jìn)入倉庫
(2)單擊文件列表頂部的下拉框“branch: master”
(3)在文本框中敲入新分支名字feature
(4)選擇“Create branch”或者直接回車
2.在線編輯
每個提交都有關(guān)聯(lián)的提交信息,用來解釋為什么要做這樣一個修改。提交信息記錄的這些歷史,可以使其他開發(fā)人員了解這次提交做了什么和為什么要這樣做。
(1)點(diǎn)擊README.md文件。
(2)點(diǎn)擊要編輯文件右上角的“鉛筆”圖標(biāo)
(3)在編輯器中,隨便寫點(diǎn)什么
(4)寫點(diǎn)提交信息描述你的更改
(5)點(diǎn)擊“Commit changes”按鈕
優(yōu)點(diǎn):
a)Preview changes可以邊修改邊查看差異

3.pull request申請
pull request是github協(xié)作的核心,可以申請一個pull request,請求別人review自己的修改。Pull request會顯示兩個分支內(nèi)容的不同,這些變更,增加和刪除的行數(shù)會用綠色和紅色顯示出來。不但在提交代碼后可以申請一個pull request,甚至可以在代碼完成前提出,討論代碼如何修改。
(1)點(diǎn)擊頂部的pull request項(xiàng),然后在點(diǎn)擊綠色的“New pull request”按鈕。
(2)選擇你修改的base分支feature和原始分支master進(jìn)行比較。
(3)在對比頁面,仔細(xì)檢查這些差異,確保是要提交的內(nèi)容。
(4)確認(rèn)OK之后,點(diǎn)擊綠色的“Create Pull Request”按鈕。
(5)給pull request寫上題目和簡短的描述
優(yōu)點(diǎn):
a)可以在pull request消息中使用github的“@”功能,請求特定的人或者小組反饋信息,無論他們在哪里都可以收到。
4.合并pull request
最后這一步,就是在feature分支上的修改合并到master分支
(1)點(diǎn)擊綠色的“Merge pull request”按鈕將修改合并到master分支
(2)點(diǎn)擊“Confirm merge”
(3)點(diǎn)擊pull request成功提示右邊的“Delete Branch”
優(yōu)點(diǎn):
a)merge有三種方法

b)可以在線修改沖突

c)合并后刪除的branch可以修復(fù)

四.github工作流
Github工作流是輕量級的,只有一個長期master分支的工作流。
來個圖表顯示:
·Master分支
·一個新的feature分支(因?yàn)槲覀円谶@個分支上做特性開發(fā))
·Feature合并到master之前的軌跡如下

1.創(chuàng)建一個分支
在做一個項(xiàng)目時,可能會在某個特定的時間有一大堆特性或想法——有已經(jīng)準(zhǔn)備好開始干的,有沒想好的。分支的存在就是來幫助管理這些工作流。
創(chuàng)建好一個分支以后,就可以隨意按照自己的想法來修改,因?yàn)檫@個分支不會影響主分支,可以隨意提交修改測試,直到做好驗(yàn)證才合入主分支。
分支是Git的核心概念,整個Github工作流都是基于它的,一條原則就是:主分支的任何東西都是可部署的。因此,在開發(fā)某個需求或者解決某個bug的時候,必須是從主分支拉取的分支,并且分支名是描述性的,以便其他人知道你在干什么。
2.做提交
提交可以讓別人清晰的看到分支的修改和為什么這么改,每次提交也都需要有提交信息。此外,每次提交應(yīng)該是一個獨(dú)立的單元,這樣,可以在發(fā)現(xiàn)問題或者方案改變時進(jìn)行回滾。
3.提一個pull request
提一個pull request開始對提交修改進(jìn)行討論,大家都能清晰的看到接受這次請求之后有哪些修改將被合并。
如果工作陷入了困境,即使沒有代碼也可以提一個pull request,放一些截圖或者想法,讓大家給一些建議。
Pull request方式對開源代碼的合并是非常有意義的,它可以讓代碼在合入master分支前有一個充分的review
4.討論和review代碼
一旦pull request被提出,reviewer將提出問題或者給出評語,比如:編碼風(fēng)格和項(xiàng)目風(fēng)格不一致,缺少單元測試等等,pull request設(shè)計(jì)的初衷就是鼓勵這些交流。
5.部署
當(dāng)pull request通過review和測試,就可以部署到生產(chǎn)環(huán)境中。如果分支引起了問題,可以通過重新部署master分支到生產(chǎn)環(huán)境來回滾版本。
6.合并
現(xiàn)在,提交已經(jīng)在生產(chǎn)環(huán)境上驗(yàn)證過了,可以合入master分支了。
華為軟件開發(fā)云配置管理服務(wù)VSgithub
1.收費(fèi)標(biāo)準(zhǔn)
Github私倉每月繳納7美元。
華為軟件開發(fā)云?配置管理服務(wù)5人以下,500M倉庫免費(fèi)。存儲空間收費(fèi)標(biāo)準(zhǔn)為0.000442(元/GB/小時),一個月1G代碼約0.318元。
2.頁面友好度
Github需要在Your profile中查看倉庫,各項(xiàng)操作堆疊在一個頁面。

華為軟件開發(fā)云配置管理服務(wù),左側(cè)分類顯示內(nèi)容,主頁選項(xiàng)清晰。

3.工具集成
Github僅僅是一個代碼托管平臺。
華為軟件開發(fā)云配置管理服務(wù)是這個Devops平臺其中的一項(xiàng)服務(wù),既可以作為代碼托管平臺單獨(dú)使用,又可以作為整個研發(fā)工具鏈的一部分來使用,所有數(shù)據(jù)在工具間拉通,平臺代碼可以直接構(gòu)建、部署,看到產(chǎn)品效果。
4.使用群體
Github歷史悠久,在開源社區(qū)廣受環(huán)境,個人使用者較多。
華為軟件開發(fā)云?配置管理服務(wù)擁有更多的企業(yè)用戶,企業(yè)使用這個平臺用于整個研發(fā)周期。目前,個人使用者由于其指導(dǎo)詳細(xì),中文頁面的優(yōu)點(diǎn),使用數(shù)量也在呈增長趨勢。