Git 基礎使用(2) 分支管理

文章目錄

  • 分支概念
  • 分支使用
    • 查看分支
    • 分支創建
    • 分支切換
    • 分支合并
    • 合并沖突
    • 分支刪除
  • 分支管理
    • 快進模式
    • 分支策略
    • 內容保存
    • 錯誤處理

分支概念

(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,但還有新功能要開發)
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12308.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12308.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12308.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【cmake】Windows 環境下編譯第三方依賴源碼(以編譯Xerces庫為例)

第三方依賴源碼的編譯分為兩種&#xff0c;一種是使用 Configure 腳本編譯&#xff0c;另一種是使用 CMakeLists.txt 編譯。Xerces 3.2.3 的編譯方式是 CMakeLists.txt 腳本編譯。 必要軟件&#xff1a; CMake &#xff08;CMake | Download&#xff09;Visual Studio 2019&a…

前端AJAX講解

目錄 1.AJAX是什么&#xff1f; 2.異步交互和同步交互 3.AJAX常見應用情景和優缺點 4.AJAX的優缺點 5.AJAX發送異步請求&#xff08;四步操作&#xff09; 6.經典案例 1.AJAX是什么&#xff1f; AJAX即“Asynchronous JavaScript and XML”&#xff08;異步的JavaScript與…

指針基礎實踐

文章目錄 1.聲明指針2.初始化指針3.指針地址和大小&#xff0c;值4.指針解引用,修改值5.指針指向堆內存&#xff0c;修改值6.申請堆內存并釋放7.數組釋放8.指針運算9.指針遞增10.指針遞減11.指針常量12.常量指針13.常量指針指向常量 1.聲明指針 2.初始化指針 3.指針地址和大小…

【數據結構】二叉樹(Binary Tree)

文章目錄 一、樹的概念及結構二、二叉樹的概念及結構1.二叉樹的概念2.特殊的二叉樹3.二叉樹的性質 三、二叉樹的存儲順序存儲鏈式存儲 四、二叉樹的實現1.創建二叉樹2.二叉樹的遍歷前序遍歷中序遍歷后序遍歷層序遍歷根據遍歷順序創建二叉樹 3.二叉樹的基本操作1.總結點個數2.二…

ctfshow之_萌新web9至web10

一、訪問在線靶場ctfshow 1、web9 如下圖所示&#xff0c;進入_萌新賽的web9問題&#xff0c;題目提醒flag在config.php中&#xff1a; 如上圖所示&#xff0c;可以get傳參&#xff0c;且傳入的參數需要正則匹配system、exec、highlight&#xff0c;且不區分大小寫&#xff0…

C++設計模式|創建型 5.原型模式

1.什么是原型模式&#xff1f; 原型模式?種創建型設計模式&#xff0c;該模式的核?思想是基于現有的對象創建新的對象&#xff0c;?不是從頭開始創建。 在原型模式中&#xff0c;通常有?個原型對象&#xff0c;它被?作創建新對象的模板。新對象通過復制原型對象的屬性和狀…

Mac IDEA 自動補全mybatis sql語句

導航 Mac IDEA 自動補全mybatis sql語句一、點擊IDEA 右側Database選項二、選擇添加對應數據庫三、輸入數據庫信息和方案四、輸入數據庫信息和方案五、成功 Mac IDEA 自動補全mybatis sql語句 背景&#xff1a; 想在Mapper中&#xff0c;能夠實現自動檢索數據庫表和對應的字段…

QT日志類SimpleQtLogger的簡單記錄

在現代軟件開發中&#xff0c;日志記錄是必不可少的部分。它不僅幫助開發者在調試和維護軟件時了解程序的運行狀態&#xff0c;還能提供關鍵的錯誤信息。對于使用Qt框架開發應用程序的開發者來說&#xff0c;選擇一個合適的日志庫至關重要。本文將詳細介紹Qt日志庫SimpleQtLogg…

web前端之sass中的顏色函數、active按鈕激活、hover鼠標懸浮、disabled禁用、scss循環、css

MENU 效果圖htmlsassscss編譯后的css頁面css 效果圖 注意查看藍色按鈕。 html <div class"box"><button class"btn type_1">按鈕</button><button class"btn type_2">按鈕</button><button class"btn ty…

一文讀懂通用漏洞評分系統CVSS4.0:順帶理清CVE、CWE及其與CVSS之間的關系

事件響應和安全團隊論壇 (FIRST&#xff0c;Forum of Incident Response and Security Teams) 于 2023 年 11 月 1 日正式推出第四版通用漏洞評分系統 (CVSS 4.0&#xff0c;Common Vulnerability Scoring System version 4.0)。CVSS 4.0 是評估計算機系統安全漏洞嚴重性的行業…

C++ 多態性

一 多態性的分類 編譯時的多態 函數重載 運算符重載 運行時的多態 虛函數 1 運算符重載的引入 使用C編寫程序時&#xff0c;我們不僅要使用基本數據類型&#xff0c;還要設計新的數據類型-------類類型。 一般情況下&#xff0c;基本數據類型的運算都是運算符來表達&#x…

【C++】詳解C++的模板

目錄 概念 ?編輯 語法 函數模板 類模板 非類型模板參數 模板的特化 函數模板特化 類模板特化 全特化 偏特化 分離編譯 概念 模板是C中非常厲害的設計&#xff0c;模板把通用的邏輯剝離出來&#xff0c;讓不同的數據類型可以復用同一種模板的邏輯&#xff0c;甚至可以…

Flutter 中的 DataTable 小部件:全面指南

Flutter 中的 DataTable 小部件&#xff1a;全面指南 在Flutter的Material組件庫中&#xff0c;DataTable是一個用于展示數據的表格組件&#xff0c;它允許開發者以一種結構化和可滾動的方式展示數據集。DataTable非常適合展示詳細信息&#xff0c;如表格數據、統計數據或配置…

PHP黑魔法之md5繞過

php本身是一種弱語言,這個特性決定了它的兩個特點: 輸入的參數都是當作字符串處理變量類型不需要聲明,大部分時候都是通過函數進行類型轉化php中的判斷有兩種: 松散比較:只需要值相同即可,類型不必相同,不通類型比較會先轉化為同類型,比如全數字字符串和數字比較,會比…

凸優化理論學習三|凸優化問題(一)

系列文章目錄 凸優化理論學習一|最優化及凸集的基本概念 凸優化理論學習二|凸函數及其相關概念 文章目錄 系列文章目錄一、優化問題&#xff08;一&#xff09;標準形式的優化問題&#xff08;二&#xff09;可行點和最優點&#xff08;三&#xff09;局部最優點&#xff08;四…

《Python編程從入門到實踐》day28

# 昨日知識點回顧 安裝Matplotlib 繪制簡單的折線圖 # 今日知識點學習 15.2.1 修改標簽文字和線條粗細 # module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? # 解決辦法&#xff1a;matplotlib切換圖形界面顯示終端TkAgg。 #…

使用Three.js繪制快速而逼真的水

本文將利用GPUComputationRenderer來實現水波紋的繪制&#xff0c;相似的案例可以看threejs官方的GPGPU Water示例。更多精彩內容盡在數字孿生平臺。 什么是 GPGPU GPGPU代表通用圖形處理單元&#xff08;General-Purpose Graphic Processing Unit&#xff09;&#xff0c;意思…

1146 -Table ‘performance schema.session variables‘ doesn‘t exist的錯誤解決

一、問題出現 今天在本地連數據庫的時候&#xff0c;發現這個問題&#xff0c;哎呦我擦&#xff0c;差點嚇死了 二、解決辦法 1&#xff09;找文件 用everything搜一下MySQL Server 5.7 然后去Windows服務找一下MySQL配置文件的具體路徑 如果知道那最好&#xff0c;不知道那…

寶塔8.1.0去除綁定用戶

非要綁定手機號&#xff0c;確實很煩 1&#xff0c;/www/server/panel/BTPanel __init__.py if not public.is_bind():return redirect(/bind, 302) 將is_bind的路由全部注釋 2&#xff0c;/www/server/panel/class下 panelPlugin.py 注釋異常&#xff0c; 新增 softLis…

SSL協議

SSL 安全傳輸協議&#xff08;安全套接層&#xff09; 也叫TLS ---- 傳輸層安全協議 SSL的工作原理&#xff1a;SSL協議因為是基于TCP協議工作的&#xff0c;通信雙方需要先建立TCP會話。因為SSL協議需要進行安全保證&#xff0c;需要協商安全參數&#xff0c;所以也需要建立…