Git的使用規(guī)范

前言

個(gè)人使用git也快4年的時(shí)間了,從開(kāi)始的pull&push分不清捆交,到慢慢的注重使用規(guī)范淑翼,使用效率,再到在團(tuán)隊(duì)協(xié)作規(guī)范品追,個(gè)人總結(jié)了一套自己的想法玄括,不一定都對(duì),希望給大家一些參考肉瓦。

初始git

git從一出來(lái)就伴隨著和svn的比較差異惠豺,個(gè)人覺(jué)得他們最大的差異是以下幾點(diǎn):

  • git有各自的本地倉(cāng)庫(kù)银还,svn只有一個(gè)中央倉(cāng)庫(kù)
  • git具有強(qiáng)大的分支管理风宁,這點(diǎn)是svn無(wú)法媲美的
  • git的每次commit保存的是文件之間的diff洁墙,svn則是全量保存

git常用的命令

git的命令實(shí)在是太多了,有很多可能我們永遠(yuǎn)都用不上戒财,作為一個(gè)工具热监,我們應(yīng)該將其基本命令做到熟練使用就可以啦。
下面列出我常用的一些命令:

  • pull
  • push
  • add
  • commit
  • status
  • fetch
  • branch
  • checkout
  • diff
  • log
  • merge
  • rebase

如果小伙伴還不知道上述命令的具體的含義饮寞,得去好好補(bǔ)補(bǔ)課啦孝扛!
更多詳細(xì)的git說(shuō)明,請(qǐng)點(diǎn)擊查看

git客戶端

進(jìn)行g(shù)it操作可以使用命令行終端幽崩,或者使用客戶端(如SourceTree)苦始。個(gè)人建議絕大部分操作都在命令行終端進(jìn)行,如pull慌申、push陌选、commit、checkout等操作蹄溉,少部分操作在客戶端進(jìn)行咨油,如查看每次提交的diff或者整體分支線。

在命令行操作git柒爵,你會(huì)更好的把握每次操作都做了些什么役电。為了更高(zhuang)效(bi)的操作git,有個(gè)小訣竅是你必須掌握的:alias(設(shè)置別名)棉胀。

下面是我常用的alias配置:

  • ci = commit
  • st = status
  • co = checkout
  • br = branch
  • ss = status --short
  • df = diff
  • dc = diff --cached
  • lo = log --oneline
  • lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

最后lg這個(gè)最屌了法瑟,我也是從別處學(xué)過(guò)來(lái),具體啥效果唁奢,大家試試就知道了
alias的配置沒(méi)有最佳的霎挟,配置符合自己習(xí)慣的即可
更多alias配置可參考


git基礎(chǔ)就一筆帶過(guò)了,更多的細(xì)節(jié)網(wǎng)絡(luò)上有許多的相關(guān)文章驮瞧,相信大家都能找到自己想要的氓扛!

git分支使用規(guī)范

下面要說(shuō)的是自己在團(tuán)隊(duì)內(nèi)推行的一套多人協(xié)作的git分支使用規(guī)范,這也是大部分團(tuán)隊(duì)在用的一套分支規(guī)范论笔。


分支規(guī)范圖示

上述圖采郎,相信大部分人都見(jiàn)過(guò),但不一定理解了狂魔,我就根據(jù)自己的使用總結(jié)如下:

  • 一個(gè)穩(wěn)定master分支
  • 一個(gè)待發(fā)布的develop分支
  • 若干個(gè)正在開(kāi)發(fā)的feature分支
  • 分支合并前先rebase待合并的分支
  • 分支合并使用merge —no—ff蒜埋,生成合并記錄
  • 可以使用gitlab的pull request進(jìn)行合并前的code review
  • 如遇到線上有一般的bug,可在develop上切換出hotFix分支進(jìn)行bug修復(fù)最楷,完成后合并到develop上整份,等下次版本一起發(fā)布
  • 如遇到線上有十分嚴(yán)重bug待错,應(yīng)在master上切換出hotFix分支進(jìn)行bug修復(fù),并驗(yàn)證好了后隨即合并到master上準(zhǔn)備發(fā)布
  • 版本發(fā)布后可以按需切換出版本分支(release-v1.0)或者使用tag進(jìn)行代替

commit規(guī)范

commit示例

上述兩幅圖烈评,都是我不同時(shí)期的commit記錄火俄,相信大部分人都會(huì)覺(jué)得右圖中的commit要好些吧!

哈哈哈讲冠,下面開(kāi)始提問(wèn)環(huán)節(jié)

什么樣子的commit才算好的呢瓜客?

  • 保證commit盡量只做一件事
  • 書(shū)寫(xiě)commit message言簡(jiǎn)意賅
  • 規(guī)范commit message格式

為什么要規(guī)范commit message?

  • 加快Code Review 的過(guò)程
  • 可以快速生成release note
  • 讓其他的程序猿找歷史問(wèn)題的時(shí)候想跪謝
  • 幫助提高項(xiàng)目的整體質(zhì)量

那如何規(guī)范commit message呢竿开?

這個(gè)問(wèn)題問(wèn)的好啊谱仪,我們要規(guī)范commit,首先是不是應(yīng)該要全面剖析commit呢否彩!

commit全面剖析

提交信息包括三個(gè)部分:Header疯攒,Body 和 Footer。
<Header>
<Body>
<Footer>
其中列荔,Header 是必需的敬尺,Body 和 Footer 可以省略。

Header

格式:<type>: <subject>
type:用于說(shuō)明 commit 的類(lèi)別肌毅,如:feat筷转、fix等
subject:本次commit的簡(jiǎn)短描述,以及物動(dòng)詞開(kāi)始悬而,15個(gè)字內(nèi)

Body

Body 是對(duì)本次 commit 的詳細(xì)描述呜舒,可以分成多行。
注意:應(yīng)該說(shuō)明代碼變動(dòng)的動(dòng)機(jī)笨奠,以及與以前行為的對(duì)比袭蝗。
無(wú)重大變更,一般不寫(xiě)般婆。

Footer

Footer 一般只用于以下幾種情況
- 關(guān)聯(lián) Issue(Issue #1, #2, #3)
- 關(guān)閉 Issue(Close #1, #2, #3)
可用github關(guān)閉issue到腥,或者與自己的任務(wù)相關(guān)聯(lián)

說(shuō)了這么多,我也知道了要規(guī)范commit message蔚袍,但是難道我們每次commit的時(shí)候都手動(dòng)輸入乡范,達(dá)到上述右圖中的效果么?
很明顯不是啦啤咽,這樣子做根本就體現(xiàn)不出我們是程序猿的懶晋辆。
下面到了推出解決方案的時(shí)候了

git cz插件

根據(jù)github上相關(guān)提示進(jìn)行安裝
git cz插件
插件安裝完成之后,輸入git cz能出現(xiàn)以下效果就說(shuō)明你裝成功了

安裝成功效果圖

都是些簡(jiǎn)單的英文宇整,大家都看的懂瓶佳,我就header中type進(jìn)行簡(jiǎn)單說(shuō)明:

  • feat:完成一些功能
  • fix:修復(fù)一些問(wèn)題
  • docs:一些文檔修改
  • style:樣式修改
  • refactor:一些無(wú)關(guān)功能性的修改,例如重命名
  • perf:一些優(yōu)化重構(gòu)
  • test:測(cè)試相關(guān)提交
  • chore:引入一些第三方庫(kù)等

總結(jié)

本文將個(gè)人的git使用經(jīng)驗(yàn)進(jìn)行了初步總結(jié)鳞青,對(duì)你而言有好有壞霸饲,如其中有部分能幫組你为朋,就十分高興了!

后記

此篇博客算是我再次踏上書(shū)寫(xiě)博客之路的第一篇厚脉,期望自己能堅(jiān)持下去习寸,達(dá)到每月能有2-3篇博客的產(chǎn)出。
本人有4年以上的移動(dòng)端開(kāi)發(fā)經(jīng)驗(yàn)器仗,目前主要做Android端的開(kāi)發(fā)融涣,總覺(jué)得該沉淀沉淀啦,總結(jié)積累的開(kāi)發(fā)經(jīng)驗(yàn)精钮。
文中所說(shuō)不一定完全對(duì),歡迎大家拍磚剃斧,我一定虛心接受轨香,互相討論!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末幼东,一起剝皮案震驚了整個(gè)濱河市臂容,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌根蟹,老刑警劉巖脓杉,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異简逮,居然都是意外死亡球散,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)散庶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蕉堰,“玉大人,你說(shuō)我怎么就攤上這事悲龟∥菅龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵须教,是天一觀的道長(zhǎng)皿渗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)轻腺,這世上最難降的妖魔是什么乐疆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮约计,結(jié)果婚禮上诀拭,老公的妹妹穿的比我還像新娘。我一直安慰自己煤蚌,他們只是感情好耕挨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布细卧。 她就那樣靜靜地躺著,像睡著了一般筒占。 火紅的嫁衣襯著肌膚如雪贪庙。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天翰苫,我揣著相機(jī)與錄音止邮,去河邊找鬼。 笑死奏窑,一個(gè)胖子當(dāng)著我的面吹牛导披,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播埃唯,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼撩匕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了墨叛?” 一聲冷哼從身側(cè)響起止毕,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漠趁,沒(méi)想到半個(gè)月后扁凛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闯传,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年谨朝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丸边。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叠必,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出妹窖,到底是詐尸還是另有隱情纬朝,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布骄呼,位于F島的核電站共苛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜓萄。R本人自食惡果不足惜隅茎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫉沽。 院中可真熱鬧辟犀,春花似錦、人聲如沸绸硕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至出嘹,卻和暖如春席楚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背税稼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工烦秩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人郎仆。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓只祠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親丸升。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铆农,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Git版本控制 Git中大部分操作都是針對(duì)本地文件和本地?cái)?shù)據(jù)庫(kù),只有在我們平時(shí)執(zhí)行類(lèi)似克隆(clone)狡耻、pull...
    喜歡萌妹子的少年閱讀 415評(píng)論 1 7
  • Git是目前最流行的版本管理系統(tǒng),也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,707評(píng)論 1 17
  • git作為時(shí)下最流行的代碼管理工具猴凹,Git權(quán)威指南總結(jié)了十條喜歡Git的理由: 異地協(xié)同工作夷狰; 現(xiàn)場(chǎng)版本控制; 重...
    古斟布衣閱讀 1,824評(píng)論 0 12
  • 本次上課內(nèi)容: HFH U5L2 本次作業(yè): 橙色練習(xí)冊(cè): Workbook - P45. activity A....
    TimmySHENX閱讀 306評(píng)論 0 0
  • 人,一旦有了欲望书劝,就變得貪婪进倍,就變得不擇手段。 我們以為购对,成功就是有錢(qián)猾昆,成功就是朋友廣,成功就是權(quán)力大骡苞。 但其實(shí)垂蜗,...
    露露2008閱讀 305評(píng)論 0 1