Git 完全手冊:從入門到團隊協作實戰(4)

?????????Hello大家好!很高興我們又見面啦!給生活添點passion,開始今天的編程之路!

我的博客:<但凡.

我的專欄:《編程之路》、《數據結構與算法之美》、《C++修煉之路》、《Linux修煉:終端之內 洞悉真理》、《Git 完全手冊:從入門到團隊協作實戰》

感謝你打開這篇博客!希望這篇博客能為你帶來幫助,也歡迎一起交流探討,共同成長。

? ? ? ? 今天這期主要來介紹一下團隊協作開發的場景,并簡單介紹一下企業開發模型。?

目錄

1、多人協作模擬準備工作

2、多人協作開發場景一

3、多人協作開發場景二

4、企業級開發模型

? ? ? ? 4.1、系統開發環境

? ? ? ? 4.2、Git 分支設計

? ? ? ? 4.3、DevOps研發平臺


1、多人協作模擬準備工作

????????目前我們在Linux系統上連接了遠端倉庫,另一個用戶我們用windows系統鏈接遠端倉庫進行模擬。

? ? ? ? 首先,我們在windows系統上新建一個文件夾,接下來我們在文件夾中右鍵,點擊在終端中打開,接著我們以HTTP協議的方式克隆倉庫(前提是windows系統上安裝了git):

? ? ? ? 克隆好之后,我們可以發現文件夾中新出現了一個文件夾,這個文件夾就是我們的工作區,我們點進去,發現他克隆下了所有的遠端倉庫的文件。

? ? ? ? 接下來,我們嘗試新增一些東西,并且在終端中push到遠程倉庫中,發現鏈接沒有問題。為了接下來演示方便,我清空了倉庫中所有自己新建的文件。

? ? ? ? 為了演示方便,我們事先新建兩個分支,分別為codetest1,codetest2

? ? ? ? 我們還得刪除分支,刪除本地分支不多說了,我們想要刪除遠端分支需要執行以下命令:

git push origin --delete <branch_name>

? ? ? ? 或者直接再gitee官網上刪除掉。?

????????我們在Linux系統上新建好兩個分支,推送到遠端,然后在windows上pull遠端倉庫(反過來也可以)。?

? ? ? ? 然后我們設置上游分支,讓本地和遠端的分支都對應上:

    git branch --set-upstream-to=origin/<branch> codetest1

? ? ? ? 我們也可以在推送的時候使用以下命令設置:

git push --set-upstream origin codetest1

? ? ? ? 我們可以使用以下命令檢測分支的跟蹤狀態:

git branch -vv

? ? ? ? 接下來我們切換到另一個系統上,先把遠端分支pull一下,然后我們新建兩個同名的分支,把這兩個分支和遠端的兩個分支對應的鏈接起來:

? ? ? ? ?我們主要使用了以下命令讓本地分支和遠端分支對應建立連接:

    git branch --set-upstream-to=origin/<branch> codetest1

? ? ? ? 以后我們想要推送東西,切換到對應的分支并且直接push就可以了,不需要push -u加分支名了。?

2、多人協作開發場景一

? ? ? ? 我們首先模擬一下同分支下的協作開發場景。

目標:用戶一和用戶二在codetest1分支下對同一文件進行修改

用戶一:新增字符串“aaa”

用戶二:新增字符串"bbb"

? ? ? ? 首先我們得新建一個文本文件,我們就用windows系統來新建:

? ? ? ? 接著我們執行以下命令把這個文件推送到遠端:

git push

? ? ? ? 接下來我們新增文本“aaa”,然后在提交到遠端。當然我們也可以新建文件后立刻新增文本然后推送。

? ? ? ? 然后我們切換到Linux系統上,首先我們拉取遠端倉庫,然后新增文本,再推送到遠端倉庫:

? ? ? ? 假設說我們用戶二在拉取倉庫時,用戶一還沒有新增文本"aaa",這時候用戶二和用戶一在推送時必然會發生沖突的。現在假設遠端是aaa,用戶二是bbb,我們模擬一下發生沖突了該怎么辦:

?????????我們嘗試推送,會報類似以下錯誤:

? ? ? ? 這時候我們應該首先pull,然后再次嘗試推送。?

? ? ? ? 在完成文件的修改之后,我們還得把遠端的codetest1分支合并到master上。

? ? ? ? 方法一:

? ? ? ? 我們可以直接在gitee官網上進行合并,合并之后在拉取到兩個系統上。?

? ? ? ? ?這種方式需要我們提交申請,然后在管理和測試通過后才能合并。當然了由于我們現在之后一個人,管理和審核都是自己,我們直接全部同意掉就好了。

? ? ? ? ?接著我們在兩個用戶上把遠端倉庫的內容都拉取過來就可以了。

? ? ? ? 方法二:

? ? ? ? 我們在其中一個用戶上實現分支的合并,接下來我們把合并完成后的分支推送到遠端,然后另一個用戶再進行拉取操作。如果有沖突,我們需要打開文件手動修改。操作不難就不演示了。

? ? ? ? 最后別忘了刪除沒用的分支。但是我們這次先不刪除因為接下來還要用。

3、多人協作開發場景二

目標:多用戶在不同分支下完成開發任務

用戶一:在codetest1分支上新增文件

用戶二:在codetest2分支上新增文件

? ? ? ? 首先我們在windows系統上新增文件,然后推送到遠端:

? ? ? ? ?接下來我們切換到Linux系統上執行同樣的操作:

? ? ? ? 需要注意的是,我們實際的開發情況應該是windows系統只有codetest1分支,Linux系統只有codetest2分支,但是由于我們使用的是之前的分支所以說我們Linux系統也有codetest1分支,這就導致我們在push之前必須先把codetest1的拉取下來。但是在實際開發過程中我們直接在codetest2推送就可以了。?

? ? ? ? 接著我們完成分支的合并。這次我們使用先在本地完成合并,在推送到遠端的方式。

? ? ? ? 首先,在windows系統上,我們拉取,然后合并,接著推送到遠端。

? ? ? ? 然后切換到Linux系統,我們同樣在master分支上拉取,然后合并,最后在推送到遠端。

? ? ? ? 最后我們windows系統從遠端拉取一下即可。?

4、企業級開發模型

? ? ? ? 我們的軟件從新建文件到產品落地,大概經歷以下幾個階段:規劃,編碼,構建,測試,發布,部署和維護。

? ? ? ? 規劃,編碼,構建是開發人員的工作,測試是測試人員的工作,發布,部署,維護是運維人員的工作。

? ? ? ? 其實軟件開發工程師和運維工程師之間存在一些鴻溝,因為開發工程師往往想追求變化,一次次的優化版本,而運維工程師追求穩定,控制軟件的變更。為了彌合這個鴻溝,DevOps正式登上舞臺。

? ? ? ? 那么這個DevOps是什么東西呢?DevOps 是軟件開發(Development)和 IT 運維(Operations)的結合,旨在通過自動化、協作和持續改進來縮短軟件交付周期,提高系統可靠性和效率。其核心理念是通過打破開發與運維之間的壁壘,實現更快的迭代和更高質量的交付。總結一下,DevOps是一種方法論,我們可以通過這種思想,這種方法來提高開發的效率。

? ? ? ? 我們之后會介紹一下DevOps的研發平臺。

? ? ? ? 4.1、系統開發環境

? ? ? ? 我們介紹一下幾個常用的開發環境:

? ? ? ? 第一個是開發環境,這是開發人員們日常用于開發的服務器。

? ? ? ? 第二個是測試環境,測試環境是開發環境和之后的過度環境,畢竟一個軟件必須經過測試才能上線。

? ? ? ? 第三個是預發布環境,這個環境的作用其實也是測試,只不過測試的人換了,為了避免因測試環境和線上環境的差異帶來的影響,這個環境是和線上環境基本保持一致的,并且由一些非測試人員來測試,也就是未來的用戶們來測試。

? ? ? ? 第四個就是生產環境,生產環境是指正式提供對外服務的線上環境,例如我們目前在移動端能訪問的app都是生產環境。

? ? ? ? 當然了對于大規模公司可能還有會其他的環境,比如仿真/灰度環境

? ? ? ? 4.2、Git 分支設計

? ? ? ? 對于一個公司來說,這個公司不同崗位的程序員會使用不同的分支,也就是說會環境是和分支匹配的,環境不同,分支也就不同。

? ? ? ? 比如我們的master分支是主分支,適用環境是生產環境,release分支一般是預發布/測試環境...

? ? ? ? 注:圖片來源網絡

? ? ? ? 一般小的公司可能分支體系沒這么完善,但是master分支和develop分支是一定要有的。master分支為主分支,部署正式發布環境,而develop分支為開發分支,始終保持最新完成以及bug修復后的代碼。

? ? ? ? 我們再介紹一下其他的分支:

? ? ? ? feature分支是新功能或者新特性開發分支,以develop分支為基礎創建的。新特性開發完成后需要合并到develop分支。

????????release分支是預發布分支,主要用于提交給測試人員的代碼進行功能測試,此分支基于develop分支創建,并且在產品上線后刪除。

? ? ? ? hofix分支為線上bug分支,對于線上版本進行bug修復,當 bug修復完成后可刪除。

? ? ? ? 上面介紹的企業分支模型是Git Flow模型,是一種常用的分支設計。?一些大廠還有自己常用的分支模型,比如阿里的飛流flow分支模型。

? ? ? ? 4.3、DevOps研發平臺

? ? ? ? ?DevOps研發平臺不止一個,我們使用Gitee的研發平臺舉例

????????Gitee 企業版 - 企業級 DevOps 研發效能平臺

? ? ? ? 注冊好之后,我們按照以下流程新建一個項目:?

? ? ? ? 我們可以給項目中添加成員:

? ? ? ? 在新建倉庫時,我們可以選擇分支模型:

? ? ? ? ?我們創建好倉庫后,可以直接點擊加號新建文件:

? ? ? ? 我們切換其他的分支,新建文件后,可以在加號中找到請求評審,評審完成之后就可以合并分支,

? ? ? ? 我們也可以在分支管理中新建分支:

? ? ? ? 好了,今天的內容就分享到這,我們下期再見!?

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

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

相關文章

解決Spring事務中RPC調用無法回滾的問題

文章目錄問題分析解決方案實現原理解析執行流程說明運行實例正常流程執行執行異常流程關鍵優勢在分布式系統開發中&#xff0c;我們經常會遇到本地事務與遠程服務調用結合的場景。當本地事務包含RPC調用時&#xff0c;如果事務回滾&#xff0c;RPC調用已經執行就會導致數據不一…

sqli-labs通關筆記-第13關 POST報錯型注入(單引號括號閉合 手工注入+腳本注入兩種方法)

目錄 一、字符型注入 二、limit函數 三、GET方法與POST方法 四、源碼分析 1、代碼審計 2、SQL注入安全分析 3、報錯型注入與聯合注入 五、滲透實戰 1、進入靶場 2、注入點分析 &#xff08;1&#xff09;SQL語句 &#xff08;2&#xff09;admin) #注入探測 &…

康復器材動靜態性能測試臺:精準檢測,為康復器械安全保駕護航

在康復醫療領域&#xff0c;無論是輪椅、拐杖、假肢還是康復床&#xff0c;每一件器械的強度與穩定性都直接關系到使用者的安全與康復效果。如何確保這些器械在實際使用中經得起反復考驗&#xff1f;Delta德爾塔儀器推出的康復器材動靜態性能測試臺&#xff0c;憑借其高精度、智…

vue3中el-table表頭篩選

效果如下&#xff0c;可以勾選表頭進行隱藏&#xff0c;也可以對表頭進行拖動排序index主界面 <script> let tempHead []; const showFilter ref<boolean>(false); let tableHeadList ref<TableHeadItem[]>([{ prop: "displayId", label: "…

數據結構 之 【排序】(直接選擇排序、堆排序、冒泡排序)

目錄 1.直接選擇排序 1.1直接選擇排序的思想 1.2直接選擇排序的代碼邏輯 1.3完整排序代碼 1.3.1一次只選一個最值 1.3.2一次篩選出兩個最值 1.4直接選擇排序的時間復雜度與空間復雜度 2.堆排序 2.1堆排序的思想 2.2堆排序的具體步驟 2.3堆排序圖解 2.4完整排序代碼…

用手機當外掛-圖文并茂做報告紀要

前陣參加一個峰會,看到演講嘉賓每翻一頁PPT,下面的觀察就舉起手機一頓拍。實話說這種拍下來的,難說還會拿出來看,而且再看的時候也未必能對應到當時主講人的一些解釋 。 如果現場將圖片保存到筆記本電腦,并快速記錄關鍵信息,這樣聽完一個報告可能就直接輸出一篇報道了。 有…

Vue的ubus emit/on使用

這段代碼是 Vue.js 組件中的 mounted 生命周期鉤子函數&#xff0c;主要作用是監聽一個名為 “macSelectData” 的全局事件。具體行為如下&#xff1a;分步解釋&#xff1a;mounted() 生命周期鉤子 當組件被掛載到 DOM 后&#xff0c;Vue 會自動調用 mounted() 方法。這里常用于…

rsync報錯解決

問題說明 [rootlocalhost shyn]# rsync -avz --checksum "root192.168.159.133:/tmp/shyn" "/tmp /shyn"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! …

ArKTS: DAL,Model,BLL,Interface,Factory using SQLite

HarmonyOS 用ohos.data.rdb 用DBHelper.ets 共用調用SQLite 庫&#xff0c;進行DAL,Model,BLL,Interface,Factory 框架模式&#xff0c;表為CREATE TABLE IF NOT EXISTS signInRecord ( id INTEGER PRIMARY KEY AUTOINCREMENT, employeeId TEXT NOT NULL, employeeName TEXT NO…

MySQL JSON 數據類型用法及與傳統JSON字符串的對比 JSON數據類型簡介

文章目錄前言1. 基本用法JSON數據類型 vs 傳統JSON字符串1. 存儲方式2. 查詢方式對比3. 索引支持JSON存儲對象和數組的性能考慮1. 存儲對象2. 存儲數組性能對比總結最佳實踐建議前言 MySQL從 5.7 版本開始引入了 JSON 數據類型&#xff0c;專門用于存儲 JSON 格式的數據。與傳…

C++:list(1)list的使用

list的使用一.list基本的結構1.環狀雙向鏈表2.哨兵節點3.迭代器4.節點結構5.鏈表遍歷6.迭代器失效二.list的基本使用1.test01函數&#xff1a;主要測試std::list的初始化方式及遍歷2.test02函數&#xff1a;主要測試std::list的常用成員函數操作3.測試結果如下三.list的其他操作…

ArcGIS地形起伏度計算

地形起伏度計算地形起伏度步驟1&#xff1a;計算最大值。步驟2&#xff1a;計算最小值。步驟3&#xff1a;計算地形起伏度。地形起伏度、地形粗糙度、地表切割深度和高程變異系數均為坡面復雜度因子&#xff0c;是一種宏觀的地形信息因子&#xff0c;反映的是較大的區域內地表坡…

llama factory新手初步運行完整版

1、新建conda環境名稱為llama_factory&#xff0c;并激活 conda create -n llama_factory python3.10 conda activate llama_factory2、激活后可檢查內部包是否純凈&#xff0c;要確保環境內包較純凈&#xff0c;不然后續安裝對應包會出現一系列水土不服的問題&#xff0c;導致…

Tomcat與JDK版本對照全解析:避坑指南與生產環境選型最佳實踐

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 持續學習&#xff0c;不斷…

短視頻矩陣的未來前景:機遇無限,挑戰并存

在當今數字化信息飛速傳播的時代&#xff0c;短視頻以其獨特的魅力迅速席卷全球&#xff0c;成為人們獲取信息、娛樂消遣的重要方式之一。短視頻矩陣作為一種高效的內容傳播與運營模式&#xff0c;正逐漸展現出其強大的影響力和潛力。本文將深入探討短視頻矩陣的未來前景&#…

【數據結構】哈希——位圖與布隆過濾器

目錄 位圖&#xff1a; 引入 位圖實現&#xff1a; 位圖的結構 插入數據(標記數據) 刪除數據(重置數據) 查找數據 位圖完整代碼&#xff1a; 位圖的優缺點&#xff1a; 布隆過濾器&#xff1a; 引入 布隆過濾器實現&#xff1a; 布隆過濾器的結構&#xff1a; 插入…

本地運行C++版StableDiffusion!開源應用StableVerce發布

本地運行C版StableDiffusion&#xff01;開源應用StableVerce發布 StableVerse是一個用C開發的本地運行的圖形工具。適合初學者快速入門&#xff1b;適用于辦公室工作人員的文本和圖像制作的小規模計算能力場景。 開源地址&#xff1a;https://github.com/kelvin-luo/StableVer…

OpenLayers 快速入門(七)矢量數據

看過的知識不等于學會。唯有用心總結、系統記錄&#xff0c;并通過溫故知新反復實踐&#xff0c;才能真正掌握一二 作為一名摸爬滾打三年的前端開發&#xff0c;開源社區給了我飯碗&#xff0c;我也將所學的知識體系回饋給大家&#xff0c;助你少走彎路&#xff01; OpenLayers…

【PTA數據結構 | C語言版】關于堆的判斷

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 將一系列給定數字順序插入一個初始為空的最小堆。隨后判斷一系列相關命題是否為真。命題分下列幾種&#xff1a; x is the root&#xff1a;x是根結點&#xff1b;x and y are siblings&#xff1a…

[CH582M入門第十步]藍牙從機

前言 學習目標: 1、初步了解BLE協議 2、BLE從機代碼解析 3、使用手機藍牙軟件控制CH582M從機LED亮滅一、藍牙介紹 藍牙(Bluetooth)是一種短距離無線通信技術,主要用于設備之間的數據傳輸和通信。它由愛立信(Ericsson)于1994年提出,現由藍牙技術聯盟(Bluetooth SIG)維…