Git在工作中的常見使用(三)

1.前言


在工作中因為要考慮到安全和維護的問題,不會像前面理論中說的那樣直接。就像改個文件,總是拷貝一份,在副本中進行修改,可以了再替換原件,否則仍使用原件,這樣可以有效避免偶然的失誤影響整體的工作。當從這個角度去看時,會發(fā)現(xiàn)公司的許多繁瑣的規(guī)定都是為了保護之前的勞動成果。

2.代碼審查


代碼審查通常稱為Code Review或Review,常用的是谷歌開源的項目Gerrit。雖然界面不太友好,但是功能還是強大的,初次使用可以參考樂學樂的博客。

2.1.推送到遠端

Gerrit可以理解為一個代理,封裝了Git的遠程倉庫,通常不允許用戶直接推送(push)內容到倉庫分支上,而是refs/for/<遠程分支名>。因為Gerrit監(jiān)聽refs/for/對應分支的主機端口,當有推送時,獲取推送中的提交(commit)信息展示在服務的網(wǎng)頁上,讓用戶選擇交予哪個注冊用戶審查。通過了就合并到遠程倉庫對應的分支中,否則就退回修改,準備下次推送。

2.2.添加Change-Id

使用Gerrit時需注意的另一個問題就是給commit信息中添加Change-Id,一個SHA1的字符串。類似commit id,用來唯一標識某一次Review任務。這個不需要自己實現(xiàn),可以拷貝相應腳本到本機Git的鉤子路徑下,具體命令如下:

$ gitdir=$(git rev-parse --git-dir); scp -p -P 29418 <你的注冊郵箱>:hooks/commit-msg ${gitdir}/hooks/

有了這個腳本,每次推送時會自動添加Change-Id,最后在Gerrit上審查時看到的結果如下圖所示:


Push.png

3.重新推送


當上次審查被拒或者審查前發(fā)現(xiàn)問題時,需修改并再次推送。若還按照上面的操作就會產(chǎn)生新的Review任務,令審查人員不知道哪個才是審查對象。所以應該保持Change-Id不變,在原有的任務下生成新的Patch Set。其實上次的代碼也在任務的Patch Set中,不過Gerrit默認只使用最新的。

3.1.不改變提交信息

一般推薦使用git commit --amend命令重提,這樣可以保持提交信息(commit message)不變,包括其中的Change-Id,特別方便還不容易錯。但是需注意的是這個命令僅僅替換git commitgit addgit push仍不能少。

3.2.改變提交信息

若想完全控制新的提交,比如修改提交信息,其實也不難,就是多一步而已。

  • git reset HEAD^,撤銷上一次的提交,將版本回到上一版本;
  • git add .,添加上次和這次的所有修改到暫存區(qū);
  • git commit -m <提交信息>,提交修改,提交信息最后添加上次的Change-Id;
  • git push origin HEAD:refs/for/<遠程分支名>,推送全部代碼給Gerrit分配審查。

4.管理分支


Gitflow工作流是圍繞項目發(fā)布時所包含的場景而嚴格定義交互的分支模型。它明確了每種分支的作用,不同分支在什么情況下交互等,讓開發(fā)人員能夠清楚地按照規(guī)范進行操作,避免彼此之間相互影響,導致整個項目的進度受到影響。具體的內容可以參考哲良的文章,介紹的相當詳細。

Gitflow.png

  • Master分支,作為默認分支,承擔著記錄歷史的作用,存放著正式發(fā)布的版本代碼,并打上標簽(tag),告知版本號。
  • Develop分支,從Master分支上拉出的新分支,專門用來開發(fā),所有開發(fā)中的代碼最后都合并到上面,平常最多使用的就是它。
  • Feature分支,由Develop分支上根據(jù)功能拉出的新分支,數(shù)量不限,適合并行開發(fā)多個功能,提高開發(fā)效率。功能開發(fā)完畢,通過審查合并到Develop分支。
  • Release分支,當完成需求,準備發(fā)布版本時,fork出的分支。在上面只操作和發(fā)布有關的,比如修復Bug等。不再添加功能和更改需求,這些可以在Develop上繼續(xù)開發(fā),但得到下個版本才能發(fā)布。
  • 當發(fā)布了這個版本,就將代碼合并到Master上,同時更新Develop上的代碼。由于新功能也在開發(fā),注意沖突的解決。
  • Hotfix分支,用于處理緊急問題。那些嚴重影響用戶使用的地方,等不到計劃的下個版本發(fā)布,臨時決定發(fā)個版本。由于也是發(fā)版,得和Release一樣,將最終代碼合并到Master和Develop上。

5.總結


Git相關的常見用法差不多都講到了,畢竟內容很多,只能大概地指引個方向,大家在工作中肯定會遇到新的問題。別怕,不會就問谷哥和度娘,這是一個必然的學習過程。學以致用,你會發(fā)現(xiàn)自己慢慢地向著大神的地方爬去。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容