文章目錄
- 分支概念
- 分支使用
- 查看分支
- 分支創建
- 分支切換
- 分支合并
- 合并沖突
- 分支刪除
- 分支管理
- 快進模式
- 分支策略
- 內容保存
- 錯誤處理
分支概念
(1)分支概念
Git分支是指在版本控制系統Git中,用來表示項目的不同工作流程或開發路徑的一個重要概念。通過創建分支,可以在不影響主線代碼的情況下進行獨立的工作或實驗。在Git中,每個項目都有一個默認的主分支,通常稱為master或main分支。除了主分支外,用戶可以根據需要創建任意數量的其他分支。這些分支可以基于主分支創建,也可以基于其他分支創建。分支的主要作用是允許團隊成員在不互相干擾的情況下并行開發不同的功能或修復bug。每個分支都是獨立的代碼空間,允許開發人員自由地提交、合并和回滾更改,而不會影響其他分支或主線代碼。
(二) HEAD 含義:
Git 基礎使用(1)中提到,HEAD是.git文件夾中的一個重要文件。
Git 中的 HEAD 是一個指針,指向當前所在的本地分支上最近一次提交的版本。它可以理解為當前工作目錄的快照,是我們在代碼庫中進行操作時的參照點。HEAD:默認指向 master 分?。
HEAD作用:
①標識當前位置:HEAD 指示了當前所在的分支以及在該分支上的最新提交。
②切換分支:當我們切換分支時,HEAD 會隨之移動到所切換到的分支上,指向該分支上的最新提交
分支使用
查看分支
# 查看所有本地分支,
# 并在當前分支旁邊標記一個星號(*)表示當前所在的分支
# 即HEAD指向的分支
git branch
分支創建
git branch new_branch_name
分支切換
git checkout target_branch_name
分支合并
因為創建、合并和刪除分??常快,所以Git?勵你使?分?完成某個任務,合并后再刪掉分?,這和直接在master分?上?作效果是?樣的,但過程更安全。
# 首先需要切換到 master 分支
git checkout <target-branch>
# 把 source-branch 分支的更改合并到當前所在的 target-branch 分支上git merge <source-branch>
合并沖突
<<<<<<< HEAD
// 本地分支的修改內容
=======
// 要合并的分支的修改內容
>>>>>> branch-name// 在通過文本編輯的方式手動解決沖突之后,需要再次commit
在實際分?合并的時候,并不是想合并就能合并成功的,有時候可能會遇到代碼沖突的問題。
舉例:
分支刪除
分支與主分支合并完成后, 該分?對于我們來說就沒?了, 那么dev分?就可以被刪除掉。注意,如果當前正處于某分?下,就不能刪除當前分?。
// 刪除指定分支
// 這個指令會刪除指定的分支,前提是該分支已完全合并到當前分支中
git branch -d <branch_name>
//這會強制刪除指定分支,即使它包含未合并的更改。
git branch -D <branch_name>
分支管理
快進模式
快進模式(Fast-forward mode)是Git中一種合并分支的方式。當您嘗試將一個分支合并到當前分支時,如果當前分支的指針可以直接移動到要合并的分支的最新提交,而不需要創建新的合并提交,Git就會執行快進合并。(發升合并沖突后,手動修改并再次commite就不是Fast-forward mode模式)
在快進模式下,Git會簡單地將當前分支指針直接指向要合并的分支的最新提交,從而使得提交歷史保持線性。這種合并方式通常發生在沒有分支間的提交沖突時,可以幫助保持項目的提交歷史整潔和易于理解。
但在在這種 Fast forward 模式下,刪除分?后,查看分?歷史時,會丟掉分?信息,看不出來最新提交到底是 merge 進來的還是正常提交的。 Git ?持我們強制禁? Fast forward 模式,那么就會在 merge 時?成?個新的 commit ,這樣,從分?歷史上就可以看出分?信息。
# 合并分支時禁用快進模式
# 即使是簡單的合并操作也會生成一個合并提交,以保留合并的信息。
git merge --no-ff <branch-name>
# 提交
git commite -m
# 查看提交日志
git log
分支策略
常見分支策略如下:
主分支(Master/Main):主分支通常用于存儲穩定的、可部署的代碼。開發團隊應該保持主分支的代碼始終是可用和可部署的狀態。
開發分支(Develop):開發分支是用于整合各個功能特性的地方。團隊成員在各自的特性分支上完成開發后,將其合并到開發分支進行集成測試。
特性分支(Feature Branches):每個新功能或任務應該在單獨的特性分支上進行開發。一旦特性完成并通過測試,可以將其合并回開發分支。
發布分支(Release Branches):發布分支用于準備發布新版本。在發布分支上進行最終測試、Bug修復和版本號更新等操作。
修復分支(Hotfix Branches):用于緊急修復生產環境中的Bug的分支。修復完成后,應該將其合并回主分支和開發分支。
內容保存
# git stash 會先存儲當前工作區發生的更改,再將將當前工作區發生的更改清除
# 在Git的"堆棧"中,存儲當前工作區的內容
git stash# 用于顯示存儲的變更列表,運行這個命令后,
# Git會列出所有已經存儲的變更以及它們的引用ID
git stash list# git stash list 結果
# ID(stash@{n})
stash@{0}: WIP on <branch_name>: <commit_message>
stash@{1}: On <branch_name>: <commit_message># 它會將最近一次存儲的變更應用到當前工作目錄中,但并不會從堆棧中移除這個存儲項。
git stash apply
# 它會將最近一次存儲的變更應用到當前工作目錄中,并從堆棧中移除這個存儲項。
git stash pop
# 如果你想應用存儲的變更并且刪除所有存儲項
git stash apply stash@{n}
錯誤處理
(當master分支出現bug,但還有新功能要開發)