第2章 Git版本控制
2.1 Git概述
Git是什么?Git是一個分布式版本控制工具,于管理開發過程中的文件。
Git有哪些作用?
- 遠程備份:Git可以將本地代碼備份到遠程服務器,防止數據丟失。
- 多人協作:Git運行多個開發者在同一個代碼庫協同工作。開發者可以共享代碼、合并變更、解決沖突等。
- 代碼回溯:Git可以返回之前的代碼版本。用于修復錯誤和恢復代碼。
- 版本切換:Git可以切換分支或者不同的提交切換代碼版本。
2.2 Git環境準備
1、安裝Git
2、進行全局配置
3、配置SSH公鑰
4、建立本地倉庫及遠程倉庫
安裝Git怎么做?
下載地址:https://git-scm.com/download/win
全局配置要幾步?
1、設置用戶信息(必須配置,用于遠程連接)
git config --global user.name "ychenchen"
git config --global user.email "ycc@itcast.cn"
2、查看配置信息
git config --list
3、初始化本地倉庫及遠程倉庫
git init
配置SSH公鑰要幾步?
1、生成SSH公鑰
-
ssh-keygen -t rsa
-
不斷回車
-
如果公鑰已經存在,則自動覆蓋
2、獲取公鑰
cat ~/.ssh/id_rsa.pub
3、到Gitee中設置SSH公鑰
4、驗證是否配置成功
ssh -T git@gitee.com
2.3 Git常用命令
常見命令主要分為三大類:
- 本地倉庫命令
- 遠程倉庫命令
- 分支命令
本地倉庫命令:
# 初始化本地倉庫
git init
# 將所有文件提交到暫存區
git add .
# 將暫存區文件提交到本地倉庫
git commit -m"第一次提交所有文件到本地倉庫"
# 將暫存區文件取消暫存
git reset
# 查看詳細的提交日志
git log
# 查看簡潔的提交日志
git reflog
# 切換到指定版本
git reset --hard [version]
遠程倉庫命令:
# 添加關聯的遠程倉庫
git remote add <shortname> <url>
# 查看關聯的遠程倉庫
git remote [-v]
# 提交本地倉庫代碼到遠程倉庫
git push origin master
# --set-upstream 建立起和遠端分支的關聯,后續可省分支名和遠端名
git push [-f] [--set-upstream] [遠端名稱 [本地分支名][:遠端分支名] ]
# 克隆遠程倉庫到本地
git clone <url>
# 拉取最新的遠程倉庫
git pull <shortname> <branch>
# fatal: refusing to merge unrelated histories
git pull --allow-unrelated-histories
分支命令:
# 列出所有本地分支
git branch
# 列出所有遠程分支
git branch -r
# 列出所有本地分支和遠程分支
git branch -a
# 創建分支
git branch <branchName>
# 切換分支
git checkout <branchName>
git checkout -b <branchName> # 創建并切換分支
# 合并分支:在當前分支合并其他分支
git merge <branchName>
# 刪除分支
git branch -d b1 # 刪除分支時,需要做各種檢查
git branch -D b1 # 不做任何檢查,強制刪除
2.3.1 分支創建規則
以下是一些常見的Git分支創建規則:
1、主分支(master)
主分支用于項目的發布和部署,只有穩定的代碼才能被合并到master分支。
在master
分支上,每一個tag標記一個線上版本。
2、開發分支(develop/dev)
開發分支包含項目的最新代碼,但功能都在從該分支獨立出來的特性分支中開發。
通常命名為develop
或dev
。
3、特性分支(feature)
特性分支用于開發特定的功能,每個新功能都應在從develop
分支創建的feature/xxx
形式的特性分支上進行開發和測試。
4、預發布分支(release)
預發布分支用于準備發布新版本,進行最后的測試和調整,從 develop
分支創建以確保代碼穩定,命名格式為release/xxx
,其中xxx是具體的版本號。
測試過程中若存在bug需要修復,則直接由開發者在release分支修復并提交。
測試完成之后,將 release 分支合并到 master 和 develop 分支,此時 master 為最新代碼,用作上線。
5、修復分支(hotfix/bugfix)
修復分支用于解決線上緊急bug或修復已知問題,從 master 分支創建以確保修復代碼直接應用于穩定版本,命名格式為hotfix/xxx
或bugfix/xxx
。
完成bug修復后將代碼合并到master分支和develop分支,合并完成后可以刪除該分支。
長期穩定存在的分支只有 master 和 develop 分支,別的分支在完成對應的使命之后都會合并到這兩個分支然后被刪除。
簡單總結如下:
分支 | 作用 |
---|---|
master | 線上穩定版本分支 |
develop | 衍生出 feature 分支和 release 分支 |
feature | 完成特定功能開發的分支,存在多個,功能合并之后刪除 |
release | 準備待發布版本的分支,存在多個,版本發布之后刪除 |
hotfix | 緊急熱修復分支,存在多個,緊急版本發布之后刪除 |
分支示意圖如下:
2.3.2 解決沖突
下面是在命令行常見的解決沖突步驟:
- 使用
git status
命令查看哪些文件存在沖突。 - 使用
git diff
命令查看沖突文件的差異。 - 手動解決沖突,并驗證解決后是否正確。
- 使用
git add
標記為沖突已解決。 - 使用
git commit
命令提交解決沖突后的更改。
2.4 忽略文件
.gitignore忽略文件:忽略項目代碼中不需要的文件,一般是編譯文件、臨時文件等,把它們納入版本控制系統中毫無意義。
存放在項目的根目錄。
.gitignore內容:
.git
logs
rebel.xml
target/
!.mvn/wrapper/maven-wrapper.jar
log.path_IS_UNDEFINED
.DS_Store
offline_user.md
*.class### IntelliJ IDEA ###
.idea
*.iws
*.ipr
2.5 IDEA集成Git
2.5.1 在IDEA中配置Git
在idea的settings面板中,【Version Control】=>【Git】
- 指定Git安裝路徑【Path to Git executable】
2.5.2 IDEA中的操作方法
本地倉庫操作:
1、初始化本地倉庫【Create Git Repository】
- 依次選擇菜單【Version control】—【Create Git Repository】
- 選擇當前項目根目錄,點擊【OK】
2、克隆遠程倉庫【Clone】
- 在IDEA的菜單欄中選擇Git,再點擊【Get from Version Control】或者【Clone】
- 在彈出的【Clone Repository】窗口中輸入遠程倉庫的URL地址和對應的本地倉庫存放目錄,點擊【Clone】按鈕進行倉庫克隆操作
3、將文件加入到暫存區
- 右鍵文件或項目,選擇【Git】,選擇【Add】
- 文件變成綠色即為成功
4、將暫存區文件提交到版本庫
- 右鍵文件或項目,選擇【Git】,選擇【Commit …】
- 提交本次的日志信息
- 文件變成黑色即為成功
5、查看日志
- 右鍵文件或項目,選擇【Git】,選擇【Show History】
- 展示了提交的日志列表信息即為成功
遠程倉庫操作:
1、查看遠程倉庫和添加遠程倉庫
- 右鍵項目,找到【Git】–>【Manage Remotes…】
- 在彈出的框中可以查看已經關聯的遠程倉庫,如果沒有,則可以點擊"+"號來新增遠程倉庫
2、推送至遠程倉庫
- 在當前分支中,點擊【Push…】
- 在彈出的【Push Commits】窗口中可以看到本次推送的文件,點擊【Push】按鈕即可
3、從遠程倉庫拉取代碼
- 在當前分支中,點擊【Update Project…】
分支操作:
1、查看分支
- 在【Version control】查看即可
- 書簽標記代表當前使用分支
2、創建分支
- 分支窗口中點擊【New Branch】,彈出輸入分支名稱,點擊Create按鈕,完成分支的創建
3、切換分支
- 點擊要切換的分支,選擇【Checkout】
4、推送分支
- 點擊當前分支,選擇【Push…】
5、合并分支
- 點擊要切換的分支,選擇【Merge】
6、解決沖突
- 推薦點擊【Merge…】
- 有三個框,根據實際情況合并