前言
我們?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)-底層原理
名詞解釋
- 資源庫(kù),又叫遠(yuǎn)程倉(cāng)庫(kù)鲜棠,用于存放包括源代碼和配置在內(nèi)的項(xiàng)目文件
- 工作副本肌厨,維護(hù)著版本管理系統(tǒng),版本管理系統(tǒng)使用本地文件方式實(shí)現(xiàn)
- 客戶端工具豁陆,和資源庫(kù)進(jìn)行通信柑爸、同時(shí)維護(hù)工作副本版本的客戶端工具
- 項(xiàng)目,倉(cāng)庫(kù)存放著項(xiàng)目盒音,項(xiàng)目是倉(cāng)庫(kù)的邏輯單元
- 分支表鳍,項(xiàng)目的時(shí)間軸馅而,項(xiàng)目可以有多條分支,不同分支允許有重疊的時(shí)間軸節(jié)點(diǎn)
- 標(biāo)簽譬圣,可以簡(jiǎn)單地等同于項(xiàng)目版本瓮恭,或者迭代里程碑
工作流程
樓主先根據(jù)自己的理解,給出工作流程的整體結(jié)構(gòu)圖~
為了更清楚地說明工作流程厘熟,我們給出一定的解釋說明
- 【工作副本】可以通過
pull
操作從【資源庫(kù)】拉取更新 - 【工作副本】可以通過
push
操作往【資源庫(kù)】推送更新 - 【工作副本】通過【版本管理系統(tǒng)】(本地文件系統(tǒng))維護(hù)著修改歷史
- 【工作副本】在
修改
之后屯蹦,需要將修改結(jié)果提交
到【版本管理系統(tǒng)】 - 【工作副本】可以脫離【資源庫(kù)】而獨(dú)立地工作,【資源庫(kù)】是為了【工作副本】可以
多人協(xié)作
而提供的管理工具
最佳實(shí)踐
在Git的使用過程中绳姨,為了盡量避免或減少代碼沖突登澜,我們需要遵循一定的操作順序。有時(shí)代碼沖突不可避免飘庄,當(dāng)出現(xiàn)了代碼沖突脑蠕,我們通過怎樣的方式能夠很快、很好地對(duì)沖突的代碼進(jìn)行合并操作呢跪削?
- 修改代碼之前谴仙,先從資源庫(kù)pull
- 修改之后,提交之前碾盐,從資源庫(kù)pull時(shí)如果出現(xiàn)代碼沖突晃跺,切記不要直接進(jìn)行合并操作,而是需要在修改完成毫玖,且提交成功后再?gòu)馁Y源庫(kù)pull哼审,然后解決掉沖突
- 修改之后,提交之前孕豹,從資源庫(kù)pull時(shí)若沒有代碼沖突涩盾,將直接pull成功
- push代碼之前,先從資源庫(kù)pull励背,如有沖突春霍,需要先解決掉沖突
- 沖突的解決需要將本地修改和遠(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ù)的克隆
- 使用
git init
命令可在當(dāng)前文件夾下創(chuàng)建一個(gè)【工作副本】 - 使用
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)的常用操作。
- pull操作(快捷鍵:Ctrl + T)
- push操作(快捷鍵:Ctrl + Shift + K)
- 添加操作(快捷鍵:Ctrl + Alt + A)
- 提交操作(快捷鍵:Ctrl + K)
- 分支管理
- 回退操作(快捷鍵:Ctrl + Alt + Z)
- 設(shè)置資源庫(kù)
- 顯示修改歷史纸巷,可顯示單個(gè)文件镇草,也可以顯示整個(gè)項(xiàng)目
總結(jié)
本文根據(jù)樓主多年的Git使用經(jīng)驗(yàn)總結(jié)而出,主要從下面幾個(gè)部分對(duì)git進(jìn)行了簡(jiǎn)單地總結(jié)瘤旨。
- 對(duì)Git的理解
- Git的工作流程
- Git的最佳運(yùn)用
- 分支管理
- IDEA和Git集成使用
樓主希望通過這樣的講述讓讀者對(duì)Git有一個(gè)更深入地理解梯啤,也讓自己對(duì)Git有一個(gè)比較直觀地總結(jié)。