【DevOps】Git 圖文詳解(九):工作中的 Git 實踐

本系列包含:

  • Git 圖文詳解(一):簡介及基礎概念
  • Git 圖文詳解(二):Git 安裝及配置
  • Git 圖文詳解(三):常用的 Git GUI
  • Git 圖文詳解(四):Git 使用入門
  • Git 圖文詳解(五):遠程倉庫
  • Git 圖文詳解(六):Git 利器 - 分支
  • Git 圖文詳解(七):標簽管理
  • Git 圖文詳解(八):后悔藥 - 撤銷變更
  • Git 圖文詳解(九):工作中的 Git 實踐

Git 圖文詳解(九):工作中的 Git 實踐

  • 1.Git Flow
  • 2.金屋藏嬌 stash
  • 3.揀選提交 cherry-pick

1.Git Flow

Git Flow(Git 工作流程)是指軟件項目中的一種 Git 分支管理模型,經過了大量的實踐和優化,被認為是現代敏捷軟件開發和 DevOps(開發、技術運營和質量保障三者的交集)的最佳實踐。

在這里插入圖片描述
? 主分支master,穩定版本代碼分支,對外可以隨時編譯發布的分支,不允許直接 Push 代碼,只能請求合并(pull request),且只接受 hotfixrelease 分支的代碼合并。

? 熱修復分支hotfix,針對線上緊急問題、Bug 修復的代碼分支,修復完后合并到主分支、開發分支。

  • ① 切換到 hotfix 分支,從 master 更新代碼;
  • ② 修復 Bug;
  • ③ 合并代碼到 dev 分支,在本地 Git 中操作即可;
  • ④ 合并代碼到 master 分支。

在這里插入圖片描述
? 發版分支release,版本發布分支,用于迭代版本發布。迭代開發完成后,合并 dev 代碼到 release,在 release 分支上編譯發布版本,以及修改 Bug(定時同步 Bug 修改到 dev 分支)。測試完成后,此版本可以作為發版使用,然后把穩定的代碼 Push 到 master 分支,并打上版本標簽。

? 開發分支dev,開發版本分支,針對迭代任務開發的分支,日常開發原則上都在此分支上面,迭代完成后合并到 release 分支,開發、發版兩不誤。

在這里插入圖片描述
? 其他開發分支dev-xxx,開發人員可以針對模塊自己創建本地分支,開發完成后合并到 dev 開發分支,然后刪除本地分支。

2.金屋藏嬌 stash

當你正在 dev 分支開發一個功能時,代碼寫了一半,突然有一個線上的 Bug 急需要馬上修改。dev 分支 Bug 沒寫完,不方便提交,就不能切換到主分支去修復線上 Bug。Git 提供一個 stash 功能,可以把當前 工作區暫存區 未提交的內容 “隱藏” 起來,就像什么都沒發生一樣。

# 有未提交修改,切換分支時報錯
$ git checkout dev
error: Your local changes to the following files would be overwritten by checkout:README.md
Please commit your changes or stash them before you switch branches.
Aborting# 隱藏
$ git stash
Saved working directory and index state WIP on main: 2bc012c s# 查看被隱藏的內容
$ git stash list
stash@{0}: WIP on main: 2bc012c s# 比較一下,什么都沒有,一切都沒有發生過!
$ git diff# 去其他分支修改bug,修復完成回到當前分支,恢復工作區
$ git stash pop

在上面示例中,有未提交修改,切換分支時報錯。錯誤提示信息很明確了,commit 提交或 stash 隱藏:Please commit your changes or stash them before you switch branches.

📢 如果切換分支時,未提交修改的內容沒有沖突,是可以成功切換的,未提交修改會被帶過去。

指令
描述
git stash把未提交內容隱藏起來,包括未暫存、已暫存。 等以后恢復現場后繼續工作
git stash list查看所有被隱藏的內容列表
git stash pop恢復被隱藏的內容,同時刪除隱藏記錄
git stash save “message”git stash,可以備注說明 message
git stash apply恢復被隱藏的文件,但是隱藏記錄不刪除
git stash drop刪除隱藏記錄

📢 當然這里先提交到本地也是可以的,只是提交不是一個完整的功能代碼,而是殘缺的一部分,影響也不大。

3.揀選提交 cherry-pick

當有一個緊急 Bug,在 dev 上修復完,我們需要把 dev 上的這個 Bug 修復所做的修改 “復制” 到 master 分支,但不想把整個 dev 合并過去。為了方便操作,Git 專門提供了一個 cherry-pick 命令,讓我們能復制一個特定的提交到當前分支,而不管這個提交在哪個分支

在這里插入圖片描述
如上圖,操作過程相當于將該提交導出為補丁文件,然后在當前 HEAD 上重放,形成無論內容還是提交說明都一致的提交。

  • 希望把 dev 分支上的 v7 提交的內容合并到 master,但不需要其他的內容。
  • master 分支上執行指令 git cherry-pick v7,會產生一個新的 v7’ 提交,內容和 v7 相同。
  • 同時更新 masterHEAD,以及工作區。
# 選擇一個commit,合并進當前分支
$ git cherry-pick [commit]

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

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

相關文章

【SpringMVC】 三層架構

一.lombok工具包 中央倉庫查找這個工具包:https://mvnrepository.com/ 給類添加Data注解就可以獲取gettter和setter方法 , 這樣我們就不必寫getter 和 setter 方法. 也可以給成員屬性添加單獨的getter 和 setter , 針對某個成員屬性單獨添加setter或setter方法. 二.如果使用spr…

ORACLE手動建庫

1.確定oracle的實例名,以及數據庫名 實例名稱: ORACLE_SIDtest 數據庫名稱: test 2.手工創建如下目錄: /oracle/admin/test/adump --對應的是spfile里參數audit_file_dest …

一起學docker系列之七docker容器卷技術

目錄 1 為什么使用容器數據卷?2 數據卷的特點和優勢3 使用數據卷的方法3.1 創建容器并掛載數據卷3.2 容器間數據卷的共享與繼承 4 數據卷的權限設置5 注意事項5.1 解決權限問題5.2 路徑自動創建 結語 對于容器化應用程序的數據管理和持久化,Docker 數據卷…

鏈表的回文結構

題目描述 題目鏈接:鏈表的回文結構_牛客題霸_牛客網 (nowcoder.com) 題目分析 我們的思路是: 找到中間結點逆置后半段比對 我們可以簡單畫個圖來表示一下: ‘ 奇數和偶數都是可以的 找中間結點 我們可以用快慢指針來找中:l…

如何實現圖片輪播(python版)

為了實現圖片自動輪播,我們可以使用Python編寫一個簡單的腳本。首先,我們需要安裝一個名為Pillow的庫來處理圖片。在命令行中輸入以下命令進行安裝: pip install Pillow 接下來,我們編寫一個名為image_slideshow.py的腳本&#x…

leetcode.884——字符串分割(substr),哈希(unordered_map)的練習

884. 兩句話中的不常見單詞 句子 是一串由空格分隔的單詞。每個 單詞 僅由小寫字母組成。 如果某個單詞在其中一個句子中恰好出現一次,在另一個句子中卻 沒有出現 ,那么這個單詞就是 不常見的 。 給你兩個 句子 s1 和 s2 ,返回所有 不常用…

成為AI產品經理——模型構建流程(下)

目錄 1.模型訓練 2.模型驗證 3.模型融合 4.模型部署 上節課我們講了模型設計、特征工程,這節課我們來講模型構建剩下的三個部分:模型訓練、模型驗證和模型融合。 1.模型訓練 模型訓練就是要不斷地訓練、驗證、調優直至讓模型達到最優。 那么怎么達…

Python“牽手”京東商品詳情接口運營場景,京東商品詳情接口調用指南

京東商品詳情接口是一種程序化的接口,通過這個接口,商家或開發者可以使用自己的編程技能,獲取京東平臺上的商品詳細信息。這個接口允許商家根據自身的需求,獲取商品的標題、價格、促銷價、優惠券、庫存、銷量、詳情圖片、SKU屬性、…

YOLOv5分割訓練,從數據集標注到訓練一條龍解決

最近進行了分割標注,感覺非常好玩,也遇到了很多坑,來跟大家分享一下,老樣子有問題評論區留言,我會的就會回答你。 第一步:準備數據集 1、安裝標注軟件labelme如果要在計算機視覺領域深入的同學&#xff0…

TC397 EB MCAL開發從0開始系列 之 [15.2] Fee配置 - QsBlock demo

一、Fee配置1、配置目標2、目標依賴2.1 硬件使用2.2 軟件使用2.3 新增模塊3、EB配置3.1 配置講解3.2 模塊配置3.2.1 MCU配置3.2.2 PORT配置3.2.3 Fls_17_Dmu配置3.2.4 Fee配置3.2.5 Irq配置3.2.6 ResourceM配置4、ADS代碼編寫及調試4.1 工程編譯4.2 測試結果4.3 測例源碼->

基于STC12C5A60S2系列1T 8051單片讀寫掉電保存數據IIC總線器件24C02一字節并顯示在液晶顯示器LCD1602上應用

基于STC12C5A60S2系列1T 8051單片讀寫掉電保存數據IIC總線器件24C02一字節并顯示在液晶顯示器LCD1602上應用 STC12C5A60S2系列1T 8051單片機管腳圖STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式及配置STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式介紹IIC通信簡單…

致遠M3 反序列化RCE漏洞復現(XVE-2023-24878)

0x01 產品簡介 M3移動辦公是致遠互聯打造的一站式智能工作平臺,提供全方位的企業移動業務管理,致力于構建以人為中心的智能化移動應用場景,促進人員工作積極性和創造力,提升企業效率和效能,是為企業量身定制的移動智慧…

15.Python 異常處理和程序調試

1. 異常處理 異常就是在程序執行過程中發生的超出預期的事件。一般情況下,當程序無法正常執行時,都會拋出異常。 在開發過程中,由于疏忽或考慮不周,出現的設計錯誤。因此,在后期程序調試中應該根據錯誤信息&#xff…

系統高可用設計-有感

文章目錄 系統設計原則是 冗余 取舍系統運維的原則是規避線上異常 高可用設計通常從 系統設計和 系統運維 2 個層面來著手突破。 系統設計原則是 冗余 取舍 冗余:指集群部署 故障轉移取舍:常見手段包括:超時控制、降級、限流 系統運維…

音視頻項目—基于FFmpeg和SDL的音視頻播放器解析(二十)

介紹 在本系列,我打算花大篇幅講解我的 gitee 項目音視頻播放器,在這個項目,您可以學到音視頻解封裝,解碼,SDL渲染相關的知識。您對源代碼感興趣的話,請查看基于FFmpeg和SDL的音視頻播放器 如果您不理解本…

springboot(ssm災害應急救援平臺 應急管理平臺Java(codeLW)

springboot(ssm災害應急救援平臺 應急管理平臺Java(code&LW) 開發語言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服務器:tomcat 數據庫:mysql 5.7(或8.0&#x…

AOP(面向切面編程)

AOP是針對面向對象編程的一種補充,有時使用面向對象不能很好完成一些額外的功能業務時,可以采用AOP來進行補充。切面編程的目的就是為了將業務目標進行而外的增強或者擴展。Spring中的AOP是基于JDK動態代理和CGLIB動態代理實現的。 應用場景 日志操作&…

【數據結構(四)】前綴、中綴、后綴表達式(逆波蘭表達式)和逆波蘭計算器的代碼實現(2)

文章目錄 1. 前綴表達式(波蘭表達式)1.1. 前綴表達式的計算機求值 2. 中綴表達式3. 后綴表達式(逆波蘭表達式)3.1. 后綴表達式的計算機求值3.2. 逆波蘭計算器的實現 4. 中綴表達式 轉 后綴表達式4.1. 思路分析4.2. 代碼實現 5. 逆波蘭計算器的完整版 1. 前綴表達式(波蘭表達式)…

手寫數字可視化_Python數據分析與可視化

手寫數字可視化 手寫數字流形學習 手寫數字 手寫數字無論是在數據可視化還是深度學習都是一個比較實用的案例。 數據在sklearn中,包含近2000份8 x 8的手寫數字縮略圖。 首先需要先下載數據,然后使用plt.imshow()對一些圖形進行可視化: 打開c…

Mysql 鎖機制分析

整體業務代碼精簡邏輯如下: Transaction public void service(Integer id) {delete(id);insert(id); }數據庫實例監控: 當時通過分析上游問題流量限流解決后,后續找時間又重新分析了下問題發生的根本原因,現將其總結如下&#xf…