前言
我們在【Git常用命令備忘】中,對Git的所有命令進行了匯總。但是,Git在項目中如何價值最大化地實踐,我們卻沒有提及,更沒有深入挖掘。樓主希望通過本文,將自己在實際項目中對Git的使用描述出來,使之能讓讀者對Git有更深入地理解。
【注】:本文側重于實踐和運用,不會涉及到底層原理和git的詳細使用。若讀者有這方面的訴求,請參考下面文章:1. 廖雪峰-Git教程;2. gitscm官網-底層原理
名詞解釋
- 資源庫,又叫遠程倉庫,用于存放包括源代碼和配置在內的項目文件
- 工作副本,維護著版本管理系統(tǒng),版本管理系統(tǒng)使用本地文件方式實現(xiàn)
- 客戶端工具,和資源庫進行通信、同時維護工作副本版本的客戶端工具
- 項目,倉庫存放著項目,項目是倉庫的邏輯單元
- 分支,項目的時間軸,項目可以有多條分支,不同分支允許有重疊的時間軸節(jié)點
- 標簽,可以簡單地等同于項目版本,或者迭代里程碑
工作流程
樓主先根據自己的理解,給出工作流程的整體結構圖~

為了更清楚地說明工作流程,我們給出一定的解釋說明
- 【工作副本】可以通過
pull操作從【資源庫】拉取更新 - 【工作副本】可以通過
push操作往【資源庫】推送更新 - 【工作副本】通過【版本管理系統(tǒng)】(本地文件系統(tǒng))維護著修改歷史
- 【工作副本】在
修改之后,需要將修改結果提交到【版本管理系統(tǒng)】 - 【工作副本】可以脫離【資源庫】而獨立地工作,【資源庫】是為了【工作副本】可以
多人協(xié)作而提供的管理工具
最佳實踐
在Git的使用過程中,為了盡量避免或減少代碼沖突,我們需要遵循一定的操作順序。有時代碼沖突不可避免,當出現(xiàn)了代碼沖突,我們通過怎樣的方式能夠很快、很好地對沖突的代碼進行合并操作呢?
- 修改代碼之前,先從資源庫pull
- 修改之后,提交之前,從資源庫pull時如果出現(xiàn)代碼沖突,切記不要直接進行合并操作,而是需要在修改完成,且提交成功后再從資源庫pull,然后解決掉沖突
- 修改之后,提交之前,從資源庫pull時若沒有代碼沖突,將直接pull成功
- push代碼之前,先從資源庫pull,如有沖突,需要先解決掉沖突
- 沖突的解決需要將本地修改和遠程修改進行對比,然后提供調整之后的文件
Git基本信息設置
設置全局用戶名和郵箱
git config --global user.name author # 將用戶名設為author
git config --global user.email author@corpmail.com # 將用戶郵箱設為author@corpmail.com
設置項目用戶名和郵箱
git config user.name nickname # 將用戶名設為nickname
git config user.email nickname@gmail.com # 將用戶郵箱設為nickname@gmail.com
工作副本的創(chuàng)建和資源庫的克隆
- 使用
git init命令可在當前文件夾下創(chuàng)建一個【工作副本】 - 使用
git clone ${remoteUrl}可從資源庫pull一個項目
分支管理策略
借用【廖雪峰-分支管理策略】的說明,我們簡單將其拷貝到這兒。
在實際開發(fā)中,我們應該按照幾個基本原則進行分支管理:
首先,master分支應該是非常穩(wěn)定的,也就是僅用來發(fā)布新版本,平時不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是說,dev分支是不穩(wěn)定的,到某個時候,比如1.0版本發(fā)布時,再把dev分支合并到master上,在master分支發(fā)布1.0版本;
你和你的小伙伴們每個人都在dev分支上干活,每個人都有自己的分支,時不時地往dev分支上合并就可以了。
所以,團隊合作的分支看起來就像這樣:

標簽管理
標簽其實是一種特殊的分支,但是其意義卻和分支有著顯著的不同。一個標簽用于標識一個版本的發(fā)布。這兒的版本可以是正式版本,可以是快照版本,也可以是內測、公測版本,等等。
IDEA集成git
當我們對Git命令使用得非常熟悉之后,我們需要進一步提高我們的工作效率。怎么提高?我們往往通過IDE來操作其中集成的Git。IDEA作為當前最受Java開發(fā)者歡迎的IDE工具,我們需要關注其中Git相關的常用操作。
- pull操作(快捷鍵:Ctrl + T)

- push操作(快捷鍵:Ctrl + Shift + K)

- 添加操作(快捷鍵:Ctrl + Alt + A)

- 提交操作(快捷鍵:Ctrl + K)

- 分支管理

- 回退操作(快捷鍵:Ctrl + Alt + Z)

- 設置資源庫

- 顯示修改歷史,可顯示單個文件,也可以顯示整個項目

總結
本文根據樓主多年的Git使用經驗總結而出,主要從下面幾個部分對git進行了簡單地總結。
- 對Git的理解
- Git的工作流程
- Git的最佳運用
- 分支管理
- IDEA和Git集成使用
樓主希望通過這樣的講述讓讀者對Git有一個更深入地理解,也讓自己對Git有一個比較直觀地總結。