【Git版本控制器】第四彈——分支管理,合并沖突,--no-ff,git stash

?🎁個人主頁:我們的五年

🔍系列專欄:Linux網絡編程

🌷追光的人,終會萬丈光芒

🎉歡迎大家點贊👍評論📝收藏?文章

?

相關筆記:
https://blog.csdn.net/djdjiejsn/category_12893502.html

前言:

分布式版本控制系統(Distributed Version Control System,簡稱 DVCS)是一種將代碼倉庫完整地復制到每個開發者本地的版本控制系統。與集中式版本控制系統(如 SVN)不同,分布式版本控制系統中的每個開發者都擁有代碼倉庫的完整副本,包括所有的歷史記錄分支標簽等信息。

目錄

1.分支

1.1認識分支:

1.2創建分支:

1.3切換分支

1.4 在分支進行代碼操作

2分支合并

2.1未發生合并沖突的合并:

2.2發生沖突的合并

3.刪除分支:

4.Bug分支


1.分支

1.1認識分支:

在前面就講過每一次提交都會有記錄,有一條線,這是master的主分支。然而,我們還可以創建其他的分支,進行分支操作,分支編寫代碼。

下面就是沒其他其他分支的master分支。

git log --graph --abbrev-commit

1.2創建分支:

git branch進行創建分支,沒有加名字就是查看當前所有的分支,加上就是創建分支

git branch    //查看所有的分支
git branch (分支名)    //創建分支

比如我查看我現在的分支:

現在只有一個分支:master分支,然后我們創建了dev1,dev2分支。

然后就再次用git branch進行查看分支就有三個了。

* 綠色的就是當前所在的分支。*表示HEAD指向的哪個分支。

1.3切換分支

前面的git checkout -- 是撤銷工作區的修改,撤銷到最近一次的暫存區或者版本庫。

但是不加--的意思就是分支切換了。

git checkout (分支名)    //分支切換

此時的HEAD就指向dev1分支了。

1.4 在分支進行代碼操作

我們在dev1分支進行代碼編寫,然后完成一次add,commit操作以后,進行的就是dev分支進行操作。而且在其他分支下是看到這個新增的代碼的。

在dev1新增,并且保存,在master分支,還有dev2分支都是看不到的。

要想在master分支看到,就要在master進行合并。


2分支合并

2.1未發生合并沖突的合并:

使用git merge進行分支合并。

git merge (分支名)

然后我們進行查看,就可以看到dev分支的內容了。

這時候就是正常的合并,沒有出現合并沖突的。

特別注意一下Fast-forward這個,ff合并,不會產生新的commit信息。

下面的最新一次信息還是devcommit產生的信息。

這個用圖示來解釋就是master直接指向dev1分支了。

master直接就指向最新一次的dev1進行的commit。

簡化的就是這樣了:

正常情況下 ,merge如果沒有發生沖突,也沒有寫--no-ff 進行合并,那么就是Fast forward模式進行合并,這種合并不會產生新的commit。這種合并,如果以后把分支刪除了,就分辨不出來這部分是merge到master里面來的,還是正常master,commit提交的。所以我們不建議使用Fast forward模式進行操作。而是每次merge時都要--no-ff,表示不要進行Fast forward模式進行合并。

加上這個選項以后,就要-m "commit描述信息".

這樣就會形成一個新的commit。

2.2發生沖突的合并

這種情況就要手動進行代碼修改,然后再進行一次commit。

Auto-merging file1
CONFLICT (content): Merge conflict in file1
Automatic merge failed; fix conflicts and then commit the result.

提示信息說,自動合并出錯,需要手動fix,然后進行commit最后的結構。

然后我們打開我們的file1

aaaaaaaaaaaaaaaaaa
dev1 add bbbbbbbbb
<<<<<<< HEAD
master master master
=======
dev dev dev dev dev
>>>>>>> dev

<<<<<<<<HEAD到=======是當前分支的內容。

=======到>>>>>>dev是dev分支修改的內容。

然后我們想要怎么修改,我們手動進行修改,再進行commit。

如果沒有發生沖突,也是可以用--no-ff 進行mege形成新的commit的。


3.刪除分支:

當分支合并以后,分支就基本沒用了,我們就可以把分支刪除了,使用的命令是:

git branch -d (已經合并的分支名)

這個只能刪除已經合并的分支。

不能刪除還沒有合并的分支。

刪除沒有合并的分支,要d變為D才能刪除。

git branch -D (未合并的分支名)

4.Bug分支

git stash的作用是保護還沒有commit的工作區和暫存區。

git stash?的主要用途:
臨時保存更改:當你正在開發某個功能或修復某個問題時,突然需要切換到另一個任務,但又不想提交當前未完成的更改。
清理工作區:在切換分支或合并代碼之前,需要清理工作區,但又不想丟失當前的更改。
快速切換任務:在多個任務之間快速切換,而不需要頻繁提交和回滾更改

//保存當前更改到 Stash
git stash//切換到修復問題的分支
git checkout fix-branch//修復問題并提交
git add .
git commit -m "Fix urgent issue"//切換回原來的分支
git checkout feature-branch//重新應用保存的更改
git stash apply
//將stash放到工作區
git stash pop

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

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

相關文章

AI助力小微企業技術開發規范化管理 | 雜談

AI助力小微企業技術開發規范化管理 在小型技術研發企業中&#xff0c;人員配置緊張&#xff0c;往往一名員工需要承擔多項職務和任務。例如&#xff0c;后端程序開發人員可能同時要負責需求調研、數據庫設計、后端設計及開發&#xff0c;甚至在某些情況下還需兼任架構師的角色。…

SpringBoot+Vue+微信小程序的貓咖小程序平臺(程序+論文+講解+安裝+調試+售后)

感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;我會一一回復&#xff0c;希望幫助更多的人。 系統介紹 在當下這個高速發展的時代&#xff0c;網絡科技正以令人驚嘆的速度不斷迭代更新。從 5G …

DeepSeek提效實操革命,全場景應用指南 AI提示詞萬能公式四步法以及對話技巧

歡迎來到濤濤聊AI DeepSeek系列文章 三塊顯示器如何擺放效率最高&#xff0c;讓deepseek給深度思考下 阿里云免費試用 DeepSeek大模型。 限時送 100 萬 tokens&#xff0c;快來搶先免費體驗&#xff01;AI 助手不再出現系統繁忙阿里云免費試用 DeepSeek大模型。 限時送 100 萬 …

智慧教室與無紙化同屏技術方案探討與實現探究

引言 隨著教育信息化的不斷發展&#xff0c;智慧教室和無紙化同屏技術逐漸成為提升教學效率和質量的重要手段。大牛直播SDK憑借其強大的音視頻處理能力和豐富的功能特性&#xff0c;在智慧教室和無紙化同屏領域積累了眾多成功案例。本文將深入探討基于大牛直播SDK的智慧教室、…

Linux MySQL 8.0.29 忽略表名大小寫配置

Linux MySQL 8.0.29 忽略表名大小寫配置 問題背景解決方案遇到的問題&#xff1a; 問題背景 突然發現有個大寫的表報不存在。 在Windows上&#xff0c;MySQL是默認支持忽略大小寫的。 這個時候你要查詢一下是不是沒有配置&#xff1a; SHOW VARIABLES LIKE lower_case_table…

【藍橋杯單片機】第十三屆省賽第二場

一、真題 二、模塊構建 1.編寫初始化函數(init.c) void Cls_Peripheral(void); 關閉led led對應的鎖存器由Y4C控制關閉蜂鳴器和繼電器 2.編寫LED函數&#xff08;led.c&#xff09; void Led_Disp(unsigned char ucLed); 將ucLed取反的值賦給P0 開啟鎖存器 關閉鎖存…

【CMake 教程】常用函數與構建案例解析(三)

一、CMake 常用函數簡析 1. 條件判斷 if() / elseif() / else() 在 CMake 腳本中&#xff0c;條件判斷是控制邏輯的重要工具。if() 支持多種比較語句&#xff0c;包括數值、字符串、布爾值和變量存在性等。在條件滿足時執行特定邏輯代碼&#xff0c;下面是典型語法&#xff1…

ASP.NET Core 8.0學習筆記(二十七)——數據遷移:Migrations深入與其他遷移命令

一、數據庫架構的管理 1.EF Core提供兩種方式來保持EF Core的模型與數據庫保持同步。 (1)以數據庫為準&#xff1a;反向工程&#xff08;Db First&#xff09;&#xff0c;適用于中大型工程 (2)以代碼為準&#xff1a;數據遷移&#xff08;Code First&#xff09;&#xff0c;…

Python 基本語法的詳細解釋

目錄 &#xff08;1&#xff09;注釋 &#xff08;2&#xff09;縮進 &#xff08;3&#xff09;變量和數據類型 變量定義 數據類型 &#xff08;4&#xff09;輸入和輸出 輸出&#xff1a;print() 函數 輸入&#xff1a;input() 函數 &#xff08;1&#xff09;注釋 注…

20-R 繪圖 - 餅圖

R 繪圖 - 餅圖 R 語言提供來大量的庫來實現繪圖功能。 餅圖&#xff0c;或稱餅狀圖&#xff0c;是一個劃分為幾個扇形的圓形統計圖表&#xff0c;用于描述量、頻率或百分比之間的相對關系。 R 語言使用 pie() 函數來實現餅圖&#xff0c;語法格式如下&#xff1a; pie(x, l…

Ubuntu 22.04 一鍵部署MinerU1.1.0

MinerU MinerU是一款將PDF轉化為機器可讀格式的工具&#xff08;如markdown、json&#xff09;&#xff0c;可以很方便地抽取為任意格式。 MinerU誕生于書生-浦語的預訓練過程中&#xff0c;我們將會集中精力解決科技文獻中的符號轉化問題&#xff0c;希望在大模型時代為科技發…

紫光同創開發板使用教程(二):sbit文件下載

sbit文件相當于zynq里面的bit文件&#xff0c;紫光的fpga工程編譯完成后會自動生成sbit文件&#xff0c;因工程編譯比較簡單&#xff0c;這里不在講解工程編譯&#xff0c;所以我這里直接下載sbit文件。 1.工程編譯完成后&#xff0c;可以看到Flow列表里面沒有報錯&#xff0c…

DeepSeek 部署全指南:常見問題解析與最新技術實踐

引言 隨著開源大模型DeepSeek的爆火&#xff0c;其部署需求激增&#xff0c;但用戶在實際操作中常面臨服務器壓力、本地部署性能瓶頸、API配置復雜等問題。本文結合2025年最新技術動態&#xff0c;系統梳理DeepSeek部署的核心問題與解決方案&#xff0c;并分享行業實踐案例&am…

Vue02

Vue02 綁定class樣式 字符串寫法&#xff0c;適用于&#xff1a;樣式的類名不確定&#xff0c;需要動態指定 數組寫法&#xff0c;適用于&#xff1a;要綁定的樣式個數不確定&#xff0c;名字也不確定 對象寫法&#xff0c;適用于&#xff1a;要綁定的樣式個數缺點&#xff…

超導量子計算機的最新進展:走向實用化的量子革命

超導量子計算機的最新進展:走向實用化的量子革命 大家好,我是 Echo_Wish,今天我們來聊聊科技圈最炙手可熱的話題之一——超導量子計算機。近年來,量子計算領域可謂是風起云涌,而超導量子計算機作為主流路線之一,已經在學術界和工業界取得了不少突破性進展。 那么,超導…

LangChain構建行業知識庫實踐:從架構設計到生產部署全指南

文章目錄 引言:行業知識庫的進化挑戰一、系統架構設計1.1 核心組件拓撲1.2 模塊化設計原則二、關鍵技術實現2.1 文檔預處理流水線2.2 混合檢索增強三、領域適配優化3.1 醫學知識圖譜融合3.2 檢索結果重排序算法四、生產環境部署4.1 性能優化方案4.2 安全防護體系五、評估與調優…

Node.js中如何修改全局變量的幾種方式

Node.js中如何修改全局變量。我需要先理解他們的需求。可能他們是在開發過程中遇到了需要跨模塊共享數據的情況&#xff0c;或者想要配置一些全局可訪問的設置。不過&#xff0c;使用全局變量可能存在一些問題&#xff0c;比如命名沖突、難以維護和測試困難&#xff0c;所以我得…

【Node.js】express框架

目錄 1初識express框架 2 初步使用 2.1 安裝 2.2 創建基本的Web服務器 2.3 監聽方法 2.3.1 監聽get請求 2.3.2 監聽post請求 2.4 響應客戶端 2.5 獲取url中的參數(get) 2.5.1 獲取查詢參數 2.5.2 獲取動態參數 2.6 托管靜態資源 2.6.1 掛載路徑前綴 2.6.2 托管多…

Vulhub靶機 Apache Druid(CVE-2021-25646)(滲透測試詳解)

一、開啟vulhub環境 docker-compose up -d 啟動 docker ps 查看開放的端口 1、漏洞范圍 在Druid0.20.0及更低版本中 二、訪問靶機IP 8888端口 1、點擊Load data進入新界面后&#xff0c;再點擊local disk按鈕。 2、進入新界面后&#xff0c;在標紅框的Base directory欄寫上…

【c語言】函數_作業詳解

前言&#xff1a; 對應鵬哥專升本c語言&#xff0c;51集 內容&#xff1a; 找出10個數值中的最大值&#xff0c; #include <stdio.h> //求10個整數中的最大值 int main() {//準備10個整數 //int arr[10] {1,2,3,4,13,6,7,8,9,-2};//用于循環10次int i 0;//也可以自…