Git分支結構

目錄

1.?線性分支結構

2. 分叉與合并結構

3. 分支與標簽的關系

4.?并行開發與分支管理策略

測試(本機系統為Rocky_linux9.4)

合并失敗解決

刪除分支

?刪除本地分支

刪除遠程分支


Git 中的分支結構是版本控制中非常重要的概念之一,它描述了項目中不同提交的組織方式和分支之間的關系。以下是Git 分支結構及其解釋:

1.?線性分支結構

  • 最簡單的分支結構是線性的,每次提交都是在前一次提交的基礎上進行的。這種結構沒有分叉或合并,所有的提交都在同一個主線上。
A --- B --- C --- D  (master)
  • 上面的示例中,ABCD 表示不同的提交,master 分支順序地指向每個新的提交。

2. 分叉與合并結構

  • 在實際項目中,通常會存在多個并行開發的分支,這些分支可以同時在不同的特性或修復上工作,然后將它們合并回主分支或其他分支。
        /--- E --- G (feature1)
A --- B --- C --- D\--- F --- H (feature2)
  • ?在上面的示例中,feature1feature2 是從 B 提交分叉出來的分支。EF 是各自分支上的提交,GH 是將特性分支合并回主分支后的提交。

3. 分支與標簽的關系

  • 標簽(Tag)通常用于標記重要的版本發布點或里程碑,它們可以指向任意的提交,不一定是分支的頭部。
A --- B --- C --- D (master, v1.0)\E --- F (v2.0)
  • 在這個示例中,v1.0 標簽指向提交 D,表示 v1.0 版本的發布點。而 v2.0 標簽指向提交 F,表示 v2.0 版本的發布點。

4.?并行開發與分支管理策略

? ? ? ?在團隊協作中,良好的分支管理策略可以有效地管理并行開發和版本控制。常見的策略包括使用主分支(如 master)作為穩定版本的發布線,使用特性分支來開發新功能或修復 bug,并通過合并操作將它們整合回主分支。

測試(本機系統為Rocky_linux9.4)

分支切換

[root@tty02 tty]# git branch newrain    #創建一個分支
[root@tty02 tty]# git branch
* (HEAD detached at ugo)masternewrain
[root@tty02 tty]# git checkout newrain  #切換到這個分支
Switched to branch 'newrain'
[root@tty02 tty]# git branchmaster
* newrain

?在newrain分支進行修改

[root@tty02 tty]# ll
total 0
-rw-r--r-- 1 root root 0 Jul  9 22:37 tty
[root@tty02 tty]# echo "1901" >> tty
[root@tty02 tty]# cat tty
1901
[root@tty02 tty]# git add .
[root@tty02 tty]# git commit -m '1901']
[newrain 96638c2] 1901]1 file changed, 1 insertion(+)
[root@tty02 tty]# git status
On branch newrain
nothing to commit, working tree clean#此時位于分支 newrain 無文件要提交,干凈的工作區

回到master分支

[root@tty02 tty]# git checkout master
Switched to branch 'master'
Your branch is based on 'origin/master', but the upstream is gone.(use "git branch --unset-upstream" to fixup)
[root@tty02 tty]# git branch
* masternewrain
[root@tty02 tty]# ll
total 0
-rw-r--r-- 1 root root 0 Jul  9 23:39 tty
[root@tty02 tty]# cat tty                       #此時在master分支上看不到內容
[root@tty02 tty]# git log  -1
commit d2470f142c7721ebbff8a3b8f5f7752ecbae67c8 (HEAD -> master, tag: v2.0, tag: v1.0, tag: ugo)
Author: Your Name <you@example.com>
Date:   Tue Jul 9 22:35:17 2024 +0800commit

合并代碼

[root@tty02 tty]# git merge newrain    #合并newrain到當前master分支
Updating d2470f1..96638c2
Fast-forwardtty | 1 +1 file changed, 1 insertion(+)[root@tty02 tty]# git status
On branch master
Your branch is based on 'origin/master', but the upstream is gone.(use "git branch --unset-upstream" to fixup)nothing to commit, working tree clean[root@tty02 tty]# cat tty
1901

合并后即可看到內容

合并失敗解決

模擬沖突,在文件的同一行做不同修改

在master分支進行修改?

[root@tty02 tty]# cat tty
1901
[root@tty02 tty]# echo '1901-git' > tty
[root@tty02 tty]# git add .
[root@tty02 tty]# git commit -m 'newrain 1901-git'
[master d343709] newrain 1901-git1 file changed, 1 insertion(+), 1 deletion(-)

?切換到newrain分支

[root@tty02 tty]# git checkout newrain
Switched to branch 'newrain'[root@tty02 tty]# git branchmaster
* newrain[root@tty02 tty]# cat tty
1901[root@tty02 tty]# echo 'newrain' >> tty
[root@tty02 tty]# git add .
[root@tty02 tty]# git commit -m '1901-git-check'
[newrain d32a6f0] 1901-git-check1 file changed, 1 insertion(+)

回到master分區,進行合并,出現沖突

[root@tty02 tty]# git checkout master
Switched to branch 'master'
Your branch is based on 'origin/master', but the upstream is gone.(use "git branch --unset-upstream" to fixup)
[root@tty02 tty]# git branch
* masternewrain[root@tty02 tty]# git merge newrain             #此時合并遇到了沖突
Auto-merging tty
CONFLICT (content): Merge conflict in tty
Automatic merge failed; fix conflicts and then commit the result.

解決沖突

[root@tty02 tty]# cat tty   #查看該文件
<<<<<<< HEAD
1901-git
=======
1901
newrain
>>>>>>> newrain
解釋:
<<<<<<< HEAD
// 當前分支的修改內容
=======
// 待合并分支的修改內容
>>>>>>> newrain

?編輯該沖突文件,手動刪除不需要的部分即可

[root@tty02 tty]# vim tty    #刪除后見下圖,下圖就是我要保留的內容

[root@tty02 tty]# git add .
[root@tty02 tty]# git commit -m "解決合并沖突"
[master 47f3b39] 解決合并沖突

?此時就已經解決該沖突。

刪除分支

因為之前已經合并了newrain分支,所以現在看到它在列表中。 在這個列表中分支名字前沒有 * 號的分支通常可以使用 git branch -d 刪除掉;剛剛已經將它們的工作整合到了另一個分支,所以并不會失去任何東西。查看所有包含未合并工作的分支,可以運行 git branch --no-merged

如果真的想要刪除分支并丟掉那些工作,如同幫助信息里所指出的,可以使用 -D 選項強制刪除它。

?刪除本地分支

[root@tty02 tty]# git branch   #查看分支
* masternewrain[root@tty02 tty]# git branch -d newrain    #刪除這個分支
Deleted branch newrain (was d32a6f0).[root@tty02 tty]# git branch               #此時就沒有了
* master  

刪除遠程分支

如果需要刪除遠程倉庫中的分支,可以使用 git push 命令和 --delete 選項:

git push origin --delete <branch-name>

這樣就完成了刪除分支的操作。在執行任何刪除操作之前,確保理解并確認刪除的分支不再需要,并且對刪除的后果有清晰的了解。

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

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

相關文章

政安晨:【Keras機器學習示例演繹】(五十四)—— 使用神經決策森林進行分類

目錄 導言 數據集 設置 準備數據 定義數據集元數據 為訓練和驗證創建 tf_data.Dataset 對象 創建模型輸入 輸入特征編碼 深度神經決策樹 深度神經決策森林 實驗 1&#xff1a;訓練決策樹模型 實驗 2&#xff1a;訓練森林模型 政安晨的個人主頁&#xff1a;政安晨 歡…

Python | Leetcode Python題解之第228題匯總區間

題目&#xff1a; 題解&#xff1a; class Solution:def summaryRanges(self, nums: List[int]) -> List[str]:def f(i: int, j: int) -> str:return str(nums[i]) if i j else f{nums[i]}->{nums[j]}i 0n len(nums)ans []while i < n:j iwhile j 1 < n …

Codeforces Round #956 (Div. 2) and ByteRace 2024 E. I Love Balls(概率期望)

題目 思路來源 官方題解 題解 特殊球不會改變普通球的順序&#xff0c;所以都是alice拿一半里較多的部分 n-k1一半向上取整就是(n-k2)/2&#xff0c;同理n-k個一般向上取整(n-k1)/2 每個特殊球獨立地來看&#xff0c;在每個空隙的概率相同 所以分別統計特殊球和非特殊球的…

LLM+Agent技術

&#x1f4a1; Agent可以理解為某種能自主理解、規劃決策、執行復雜任務的智能體。Agent 是讓 LLM 具備目標實現的能力&#xff0c;并通過自我激勵循環來實現這個目標。它可以是并行的&#xff08;同時使用多個提示&#xff0c;試圖解決同一個目標&#xff09;和單向的&#xf…

14-63 劍和詩人37 - 分布式系統中的數據訪問設計

?? 在分布式系統中,跨服務和數據庫提供統一、可靠的數據訪問至關重要,但又極具挑戰性。微服務和數據庫的拓撲結構為分布、緩存、復制和同步帶來了復雜性。 讓我們探索有助于解決這些復雜性并簡化構建強大、高性能分布式系統的常見數據訪問模式。 概述 我們將通過示例介紹…

探索AI數字人的開源解決方案

引言 隨著人工智能&#xff08;AI&#xff09;技術的迅猛發展&#xff0c;AI數字人&#xff08;或虛擬人&#xff09;正逐漸走進我們的生活&#xff0c;從虛擬助手到虛擬主播&#xff0c;再到虛擬客服&#xff0c;AI數字人在各個領域展現出巨大的潛力。開源解決方案的出現&…

解碼生命語言:Transformer模型在基因序列分析的突破性應用

解碼生命語言&#xff1a;Transformer模型在基因序列分析的突破性應用 基因序列分析是現代生物學和醫學研究的基石&#xff0c;它涉及對DNA或RNA序列的識別、比較和解釋。隨著深度學習技術的興起&#xff0c;特別是Transformer模型的出現&#xff0c;基因序列分析領域迎來了新…

[vite] Pre-transform error: Cannot find package pnpm路徑過長導致運行報錯

下了套vue3的代碼&#xff0c;執行pnpm install初始化&#xff0c;使用vite啟動&#xff0c;啟動后訪問就會報錯 報錯信息 ERROR 16:40:53 [vite] Pre-transform error: Cannot find package E:\work\VSCodeProjectWork\jeecg\xxxxxxxxx-next\xxxxxxxxx-next-jeecgBoot-vue3\…

AC修煉計劃(AtCoder Regular Contest 180) A~C

A - ABA and BAB A - ABA and BAB (atcoder.jp) 這道題我一開始想復雜了&#xff0c;一直在想怎么dp&#xff0c;沒注意到其實是個很簡單的規律題。 我們可以發現我們住需要統計一下類似ABABA這樣不同字母相互交替的所有子段的長度&#xff0c;而每個字段的的情況有&#xff…

Postman中的API安全堡壘:全面安全性測試指南

&#x1f6e1;? Postman中的API安全堡壘&#xff1a;全面安全性測試指南 在當今的數字化世界中&#xff0c;API安全性是保護數據和系統不可或缺的一環。Postman作為API開發和測試的領先工具&#xff0c;提供了多種功能來幫助開發者進行API安全性測試。本文將深入探討如何在Po…

交互式AI的新紀元:Transformer模型的革新應用

交互式AI的新紀元&#xff1a;Transformer模型的革新應用 隨著人工智能技術的不斷進步&#xff0c;交互式人工智能&#xff08;AI&#xff09;逐漸成為提升用戶體驗的關鍵技術。Transformer模型&#xff0c;以其卓越的處理序列數據的能力&#xff0c;已成為推動交互式AI發展的…

利用 AI 解放雙手:把“賈維斯”帶進現實 | 開源專題 No.64

Significant-Gravitas/AutoGPT Stars: 160k License: MIT AutoGPT 是開源 AI 代理生態系統的核心工具包。 提供構建、測試和委托 AI 代理的工具。AutoGPT 處于 AI 創新前沿&#xff0c;提供文檔、貢獻指南以及快速開始創建自己的代理。包含強大的組件如 Forge 和 Benchmark&…

【教程】Hexo 部署到 Github Page 后,自定義域名失效的問題

目錄 前言&問題描述解決方案細節 前言&問題描述 近期給 Github Page 上托管的靜態網站映射了自定義域名&#xff08;aiproducthome.top&#xff09;&#xff0c;之后發現每次更新并部署 hexo 到 Github Page &#xff08;hexo d&#xff09;后就會出現自定義域名失效的…

探索SQL Server查詢優化的奧秘:數據庫查詢優化器深度解析

探索SQL Server查詢優化的奧秘&#xff1a;數據庫查詢優化器深度解析 在數據庫管理的世界里&#xff0c;查詢優化器是確保查詢效率的關鍵組件。SQL Server的查詢優化器采用先進的算法&#xff0c;將用戶的SQL查詢轉換成高效的執行計劃。本文將深入探討SQL Server查詢優化器的工…

高效利用iCloud:全面指南與技術深度解析

引言 在數字化時代&#xff0c;數據的同步、備份和跨設備協作變得尤為重要。蘋果公司的iCloud服務憑借其強大的云存儲和同步功能&#xff0c;為用戶提供了一個無縫的數據管理解決方案。本文將全面介紹如何高效利用iCloud&#xff0c;幫助用戶更好地管理數據、提升工作效率&…

Python如何進行游戲開發?

使用Python進行游戲開發可以通過以下幾個步驟來實現。Python有多個游戲開發框架和庫&#xff0c;最常用的是Pygame。下面是一個簡要的指南&#xff0c;介紹如何使用Pygame進行游戲開發。 安裝Pygame 首先&#xff0c;你需要安裝Pygame庫。你可以使用pip進行安裝&#xff1a; …

前端如何去看藍湖

首先加入團隊&#xff0c;在內容中我們可以看到點擊圖片&#xff0c;右邊出現的圖 包含了像素甚至有代碼&#xff0c;我們可以參考這個代碼。 那么在使用之前我們需要調整好像素&#xff0c;例如我們的像素寬為375&#xff0c;不用去管高&#xff0c;然后這個寬度我們可以去自…

QT——Excel實現自繪區域選擇邊框

文章目錄 一、自繪區域邊框1.1、效果展示2.2、問題整理2.2.1、重繪單元格選擇區2.2.2、選擇區域的大小 一、自繪區域邊框 1.1、效果展示 單選 多選 2.2、問題整理 2.2.1、重繪單元格選擇區 誤區: 繼承QStyledItemDelegate重寫paint,測試發現只能在單元格內繪制。 通過繼…

圖鳥UI框架在uni-app多端應用開發中的實踐與應用

摘要&#xff1a; 隨著移動互聯網的蓬勃發展&#xff0c;跨平臺應用開發已成為行業趨勢。本文將探討圖鳥UI框架如何在uni-app開發環境下助力開發者高效構建多端應用&#xff0c;并通過具體案例展示其在實際項目中的應用效果。 一、引言 在移動應用開發領域&#xff0c;跨平臺…

Java | Leetcode Java題解之第228題匯總區間

題目&#xff1a; 題解&#xff1a; class Solution {public List<String> summaryRanges(int[] nums) {List<String> ans new ArrayList<>();for (int i 0, j, n nums.length; i < n; i j 1) {j i;while (j 1 < n && nums[j 1] num…