Git常用開發(fā)流程

前言

我們?cè)?a target="_blank" rel="nofollow">【Git常用命令備忘】中捐友,對(duì)Git的所有命令進(jìn)行了匯總。但是溃槐,Git在項(xiàng)目中如何價(jià)值最大化地實(shí)踐匣砖,我們卻沒有提及,更沒有深入挖掘昏滴。樓主希望通過本文猴鲫,將自己在實(shí)際項(xiàng)目中對(duì)Git的使用描述出來,使之能讓讀者對(duì)Git有更深入地理解谣殊。

【注】:本文側(cè)重于實(shí)踐和運(yùn)用拂共,不會(huì)涉及到底層原理和git的詳細(xì)使用。若讀者有這方面的訴求姻几,請(qǐng)參考下面文章:1. 廖雪峰-Git教程宜狐;2. gitscm官網(wǎng)-底層原理

名詞解釋

  1. 資源庫(kù),又叫遠(yuǎn)程倉(cāng)庫(kù)鲜棠,用于存放包括源代碼和配置在內(nèi)的項(xiàng)目文件
  2. 工作副本肌厨,維護(hù)著版本管理系統(tǒng),版本管理系統(tǒng)使用本地文件方式實(shí)現(xiàn)
  3. 客戶端工具豁陆,和資源庫(kù)進(jìn)行通信柑爸、同時(shí)維護(hù)工作副本版本的客戶端工具
  4. 項(xiàng)目,倉(cāng)庫(kù)存放著項(xiàng)目盒音,項(xiàng)目是倉(cāng)庫(kù)的邏輯單元
  5. 分支表鳍,項(xiàng)目的時(shí)間軸馅而,項(xiàng)目可以有多條分支,不同分支允許有重疊的時(shí)間軸節(jié)點(diǎn)
  6. 標(biāo)簽譬圣,可以簡(jiǎn)單地等同于項(xiàng)目版本瓮恭,或者迭代里程碑

工作流程

樓主先根據(jù)自己的理解,給出工作流程的整體結(jié)構(gòu)圖~

Git工作流程

為了更清楚地說明工作流程厘熟,我們給出一定的解釋說明

  1. 【工作副本】可以通過pull操作從【資源庫(kù)】拉取更新
  2. 【工作副本】可以通過push操作往【資源庫(kù)】推送更新
  3. 【工作副本】通過【版本管理系統(tǒng)】(本地文件系統(tǒng))維護(hù)著修改歷史
  4. 【工作副本】在修改之后屯蹦,需要將修改結(jié)果提交到【版本管理系統(tǒng)】
  5. 【工作副本】可以脫離【資源庫(kù)】而獨(dú)立地工作,【資源庫(kù)】是為了【工作副本】可以多人協(xié)作而提供的管理工具

最佳實(shí)踐

在Git的使用過程中绳姨,為了盡量避免或減少代碼沖突登澜,我們需要遵循一定的操作順序。有時(shí)代碼沖突不可避免飘庄,當(dāng)出現(xiàn)了代碼沖突脑蠕,我們通過怎樣的方式能夠很快、很好地對(duì)沖突的代碼進(jìn)行合并操作呢跪削?

  1. 修改代碼之前谴仙,先從資源庫(kù)pull
  2. 修改之后,提交之前碾盐,從資源庫(kù)pull時(shí)如果出現(xiàn)代碼沖突晃跺,切記不要直接進(jìn)行合并操作,而是需要在修改完成毫玖,且提交成功后再?gòu)馁Y源庫(kù)pull哼审,然后解決掉沖突
  3. 修改之后,提交之前孕豹,從資源庫(kù)pull時(shí)若沒有代碼沖突涩盾,將直接pull成功
  4. push代碼之前,先從資源庫(kù)pull励背,如有沖突春霍,需要先解決掉沖突
  5. 沖突的解決需要將本地修改和遠(yuǎn)程修改進(jìn)行對(duì)比,然后提供調(diào)整之后的文件

Git基本信息設(shè)置

設(shè)置全局用戶名和郵箱

git config --global user.name author # 將用戶名設(shè)為author
git config --global user.email author@corpmail.com # 將用戶郵箱設(shè)為author@corpmail.com

設(shè)置項(xiàng)目用戶名和郵箱

git config user.name nickname # 將用戶名設(shè)為nickname
git config user.email nickname@gmail.com # 將用戶郵箱設(shè)為nickname@gmail.com

工作副本的創(chuàng)建和資源庫(kù)的克隆

  1. 使用git init命令可在當(dāng)前文件夾下創(chuàng)建一個(gè)【工作副本】
  2. 使用git clone ${remoteUrl}可從資源庫(kù)pull一個(gè)項(xiàng)目

分支管理策略

借用【廖雪峰-分支管理策略】的說明叶眉,我們簡(jiǎn)單將其拷貝到這兒址儒。

在實(shí)際開發(fā)中,我們應(yīng)該按照幾個(gè)基本原則進(jìn)行分支管理:

首先衅疙,master分支應(yīng)該是非常穩(wěn)定的莲趣,也就是僅用來發(fā)布新版本,平時(shí)不能在上面干活饱溢;

那在哪干活呢喧伞?干活都在dev分支上,也就是說,dev分支是不穩(wěn)定的潘鲫,到某個(gè)時(shí)候翁逞,比如1.0版本發(fā)布時(shí),再把dev分支合并到master上溉仑,在master分支發(fā)布1.0版本挖函;

你和你的小伙伴們每個(gè)人都在dev分支上干活,每個(gè)人都有自己的分支浊竟,時(shí)不時(shí)地往dev分支上合并就可以了怨喘。

所以,團(tuán)隊(duì)合作的分支看起來就像這樣:

分支管理策略

標(biāo)簽管理

標(biāo)簽其實(shí)是一種特殊的分支振定,但是其意義卻和分支有著顯著的不同哲思。一個(gè)標(biāo)簽用于標(biāo)識(shí)一個(gè)版本的發(fā)布。這兒的版本可以是正式版本吩案,可以是快照版本,也可以是內(nèi)測(cè)帝簇、公測(cè)版本徘郭,等等。

IDEA集成git

當(dāng)我們對(duì)Git命令使用得非常熟悉之后丧肴,我們需要進(jìn)一步提高我們的工作效率残揉。怎么提高?我們往往通過IDE來操作其中集成的Git芋浮。IDEA作為當(dāng)前最受Java開發(fā)者歡迎的IDE工具抱环,我們需要關(guān)注其中Git相關(guān)的常用操作。

  1. pull操作(快捷鍵:Ctrl + T)
pull操作
  1. push操作(快捷鍵:Ctrl + Shift + K)
push操作
  1. 添加操作(快捷鍵:Ctrl + Alt + A)
添加操作
  1. 提交操作(快捷鍵:Ctrl + K)
提交操作
  1. 分支管理
分支管理
  1. 回退操作(快捷鍵:Ctrl + Alt + Z)
回退操作
  1. 設(shè)置資源庫(kù)
設(shè)置資源庫(kù)
  1. 顯示修改歷史纸巷,可顯示單個(gè)文件镇草,也可以顯示整個(gè)項(xiàng)目
顯示修改歷史

總結(jié)

本文根據(jù)樓主多年的Git使用經(jīng)驗(yàn)總結(jié)而出,主要從下面幾個(gè)部分對(duì)git進(jìn)行了簡(jiǎn)單地總結(jié)瘤旨。

  1. 對(duì)Git的理解
  2. Git的工作流程
  3. Git的最佳運(yùn)用
  4. 分支管理
  5. IDEA和Git集成使用

樓主希望通過這樣的講述讓讀者對(duì)Git有一個(gè)更深入地理解梯啤,也讓自己對(duì)Git有一個(gè)比較直觀地總結(jié)。

參考鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末存哲,一起剝皮案震驚了整個(gè)濱河市因宇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祟偷,老刑警劉巖察滑,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異修肠,居然都是意外死亡贺辰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魂爪,“玉大人先舷,你說我怎么就攤上這事∽沂蹋” “怎么了蒋川?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撩笆。 經(jīng)常有香客問我捺球,道長(zhǎng),這世上最難降的妖魔是什么夕冲? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任氮兵,我火速辦了婚禮,結(jié)果婚禮上歹鱼,老公的妹妹穿的比我還像新娘泣栈。我一直安慰自己,他們只是感情好弥姻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布南片。 她就那樣靜靜地躺著,像睡著了一般庭敦。 火紅的嫁衣襯著肌膚如雪疼进。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天秧廉,我揣著相機(jī)與錄音伞广,去河邊找鬼。 笑死疼电,一個(gè)胖子當(dāng)著我的面吹牛嚼锄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔽豺,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼灾票,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了茫虽?” 一聲冷哼從身側(cè)響起刊苍,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎濒析,沒想到半個(gè)月后正什,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡号杏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年婴氮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斯棒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡主经,死狀恐怖荣暮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情罩驻,我是刑警寧澤穗酥,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站惠遏,受9級(jí)特大地震影響砾跃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜节吮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一抽高、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧透绩,春花似錦翘骂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至志鞍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間方仿,已是汗流浹背固棚。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仙蚜,地道東北人此洲。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像委粉,于是被迫代替她去往敵國(guó)和親呜师。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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

  • Git常用語法 [TOC] Git簡(jiǎn)介 描述 ? Git(讀音為/g?t/贾节。)是一個(gè)開源的分布式版本控制系統(tǒng)汁汗,...
    君惜丶閱讀 3,529評(píng)論 0 13
  • 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看當(dāng)前狀態(tài) git c...
    LOVE_晴天閱讀 2,326評(píng)論 0 10
  • 多種多樣的工作流使得在項(xiàng)目中實(shí)施Git時(shí)變得難以選擇栗涂。這份教程提供了一個(gè)出發(fā)點(diǎn)知牌,調(diào)查企業(yè)團(tuán)隊(duì)最常見的Git工作流。...
    JSErik閱讀 4,409評(píng)論 2 8
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照斤程,而是把代碼倉(cāng)庫(kù)完整的鏡像下來角寸。這樣一來,任何一處協(xié)同...
    __silhouette閱讀 15,887評(píng)論 5 147
  • 隨著智能硬件的普及,物聯(lián)網(wǎng)越來越觸及人們的日常生活扁藕。而互聯(lián)網(wǎng)是我們熟得不能再熟的沮峡,因?yàn)槠湟呀?jīng)和我們的生活息息相關(guān)了...
    璃_2fe0閱讀 323評(píng)論 0 0