0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GIT(分布式版本控制系統(tǒng))的工作原理

馬哥Linux運維 ? 來源:稀土掘金技術(shù)社區(qū) ? 2023-12-21 16:09 ? 次閱讀

7de670c2-9763-11ee-8b88-92fbcf53809c.jpg

SVN(集中式版本控制系統(tǒng)

中央服務(wù)器是完整的,commit動作直接連接服務(wù)器執(zhí)行

GIT(分布式版本控制系統(tǒng))

都是完整的,功能更強大,自然而然操作更復(fù)雜一些。git在本地也是以git版本庫的形式管理,可以在本地做一些修改,然后commit到本地的版本庫,最后push到服務(wù)器。

還有啥呢,如CVS、VSS....但和SVN一樣都是單一的集中管理的服務(wù)器,保存所有文件的修訂版本,而協(xié)同工作的人們都通過客戶端連到這臺服務(wù)器,取出最新的文件或者提交更新。(沒用過,了解也不多)

工作原理

7df024f0-9763-11ee-8b88-92fbcf53809c.jpg

工作區(qū)間: 即我們創(chuàng)建的工程文件, 在編輯器可直觀顯示;

緩存區(qū): 只能通過git GUI或git shell 窗口顯示,提交代碼、解決沖突的中轉(zhuǎn)站;

本地倉庫: 只能在git shell 窗口顯示,連接本地代碼跟遠程代碼的樞紐,不能聯(lián)網(wǎng)時本地代碼可先提交至該處;

遠程倉庫: 即保存我們代碼的服務(wù)器,本文以公共版本控制系統(tǒng):gitlab為例,登錄gitlab賬號后可直觀顯示;

淺談下我們實際場景常用的命令吧

1、配置


#配置郵箱 
git config  --global  user.email "你的郵箱"


#配置用戶名
git config --global user.name "你的用戶名"


#生成SSH秘鑰
ssh-keygen -t rsa -C "你的郵箱"


#查看所有的配置信息
git config -l 


#更針對性的
git config --system -l 
git config --local -l 
git config --global -l 


#查看遠程庫信息
git remote -v


#移除遠程地址信息 
git remote remove origin


#添加新的地址:
git remote add origin 遠程路徑


#直接修改遠程倉庫指向地址
git remote set-url origin 遠程路徑


#編輯模式修改
git config -e


#設(shè)置記住密碼(默認15分鐘)
git config --global credential.helper cache
#設(shè)置記住密碼時間
git config credential.helper 'cache --timeout=3600'
#永久保存密碼
git config --global credential.helper store
#清除密碼
git config --system --unset credential.helper


2、常用命令



#列一下容易遇到需要使用的吧


#拷貝一份遠程倉庫,也就是下載一個項目。
git clone


#添加文件到暫存區(qū)
git add


#將暫存區(qū)內(nèi)容添加到倉庫中
git commit
#想修改注釋,輸入以下命令,會進入默認vim編輯器,修改注釋完畢后保存就好了
git commit --amend


#刪除工作區(qū)文件。
git rm
#將文件從暫存區(qū)和工作區(qū)中刪除
git rm 
#如果刪除之前修改過并且已經(jīng)放到暫存區(qū)域的話,則必須要用強制刪除選項 -f
git rm -f 
#想把文件從暫存區(qū)域移除,但仍然希望保留在當前工作目錄中
git rm --cached 


#移動或重命名工作區(qū)文件。
git mv [file] [newfile]


#從遠程獲取代碼庫
git fetch 




#下載遠程代碼并合并
git pull
#拉取遠程master和本地matser合并
git pull origin master
#拉取遠程的master到本地的dev
git pull origin master:dev


#上傳遠程代碼并合并
git push <遠程主機名> <本地分支名>:<遠程分支名>
#如果本地版本與遠程版本有差異,但又要強制推送可以使用 --force 參數(shù)
git push --force origin master


#合并
git merge


#刪除本地分支xxx  刪除分支前先切換到其他分支
git checkout dev
git branch -D tmp
#刪除遠程分支XXX
git push origin --delete XXX


#查看倉庫當前的狀態(tài),顯示有變更的文件。
git status


#比較文件的不同,即暫存區(qū)和工作區(qū)的差異。
git diff 
#顯示暫存區(qū)和工作區(qū)的差異
git diff [file]
#顯示暫存區(qū)和上一次提交(commit)的差異
git diff --cached [file]
git diff --staged [file]


#查看歷史提交記錄
git log  #--pretty=oneline
#更簡潔的查看
git reflog


#以列表形式查看指定文件的歷史修改記錄
git blame 


#回退版本。
#--soft  不刪除工作空間改動代碼,撤銷commit,不撤銷git add . 
#--hard   刪除工作空間改動代碼,撤銷commit,撤銷git add . 
git reset
#回退到上一個版本
git reset --hard  HEAD^
#回退到上上一個版本(更多以此類推)
git reset --hard  HEAD^^
#回退版本也可以寫成HEAD~1、HEAD~2....
git reset --hard  HEAD~2
#指定版本號回退
git reset --hard  930c4a7a


#查看分支列表
git branch
git branch -r
git branch -a




#挑揀提交
git cherry-pick
#誤刪怎么辦
git  checkout  -- test.txt
#創(chuàng)建本地tag
git tag 
#推送到遠程倉庫
git push origin 
#一次全部推送本地未推送的標簽
git push origin --tags


#執(zhí)行存儲時,添加備注,方便查找,只有g(shù)it stash 也是可以的,但查找時不方便識別
git stash save "save message" 
#查看stash了哪些存儲
git stash list
#命令恢復(fù)之前緩存的工作目錄
git stash pop
#應(yīng)用某個存儲,但不會把存儲從存儲列表中刪除,默認使用第一個存儲,即stash@{0}
git stash apply
#丟棄stash@{$num}存儲,從列表中刪除這個存儲
git stash drop 
#刪除所有緩存的stash
git stash clear


3、一些輔助操作


git  config  --global  alias.co  checkout
git  config  --global  alias.ci   commit
.......




git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgree
n(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

目錄中新建了一個.gitignore文件,將想要忽略的文件或者目錄保存即可

聊一聊分支設(shè)計的規(guī)范(良好習慣的養(yǎng)成)

明確一點:規(guī)范是死的,人是活的,再好的規(guī)范也要團隊適合,并且需要團隊成員去遵循,沒有一成不變的規(guī)范

1、軟件環(huán)境

DEV 環(huán)境(Development environment):用于開發(fā)者調(diào)試使用。

FAT 環(huán)境(Feature Acceptance Test environment):功能驗收測試環(huán)境,用于測試環(huán)境下的軟件測試者測試使用。

UAT 環(huán)境(User Acceptance Test environment):用戶驗收測試環(huán)境,用于生產(chǎn)環(huán)境下的軟件測試者測試使用。

PRO 環(huán)境(Production environment):就是生產(chǎn)環(huán)境。

2、分支命名

分支 名稱 環(huán)境 可訪問
master 主分支 PRO
release 預(yù)上線分支 UAT
hotfix 緊急修復(fù)分支 DEV
develop 測試分支 FAT
feature 需求開發(fā)分支 DEV

master 分支

master為主分支,用于部署到正式環(huán)境(PRO),一般由release或hotfix分支合并,任何情況下不允許直接在 master 分支上修改代碼。

release 分支(一般在發(fā)布日由運維創(chuàng)建,我們公司目前是常駐的pre-production)

release為預(yù)上線分支,用于部署到預(yù)上線環(huán)境(UAT),始終保持與master分支一致,一般由develop或hotfix分支合并,不建議直接在release分支上直接修改代碼。

如果在release分支測試出問題,需要回歸驗證develop分支看否存在此問題。

hotfix /repair 分支

hotfix為緊急修復(fù)分支,命名規(guī)則為hotfix-開頭。

當線上出現(xiàn)緊急問題需要馬上修復(fù)時,需要基于release或master分支創(chuàng)建hotfix分支,修復(fù)完成后,再合并到release或develop分支,一旦修復(fù)上線,便將其刪除。

develop 分支

develop為測試分支,用于部署到測試環(huán)境(FAT),始終保持最新完成以及 bug 修復(fù)后的代碼,可根據(jù)需求大小程度確定是由feature分支合并,還是直接在上面開發(fā)。(注:在我們公司不建議直接上面修改)

一定是滿足測試的代碼才能往上面合并或提交。

feature 分支(我們公司以迭代代號創(chuàng)建)

feature為需求開發(fā)分支,命名規(guī)則為feature-開頭,一旦該需求上線,便將其刪除(但可以按照公司習慣,比如刪除一個月以前的.....)。

commit提交規(guī)范

提交的信息很重要,可以方便我們查閱日志,建議大家認真填寫,可以參考規(guī)范:(如下)

(scope):

type表示 動作類型,可分為:

fix:修復(fù) xxx Bug,有時可在相關(guān)commit上加上修復(fù)的bug的等級

Blocker (中斷) : 客戶端程序無響應(yīng),無法執(zhí)行下一步操作 Critical (嚴重):功能點缺失 Major (較嚴重):功能點沒有滿足需求 Normal (普通):數(shù)值計算錯誤,js錯誤 Minor (次要):界面UI與需求不符 Trivial (輕微):輔助描述說明不清楚,提示語句錯誤之類…

feat:新增 xxx 功能

test:調(diào)試 xxx 功能

style:變更 xxx 代碼格式或注釋

docs:變更 xxx 文檔

refactor:重構(gòu) xxx 功能或方法

chore:構(gòu)建過程或輔助工具的變動,比如項目新加了別的js插件之類的

scope表示 影響范圍,可分為:模塊、類庫、方法等。

subject表示 簡短描述,最好不要超過 60 個字。

如 git commit -m 'fix(購物車):滿增滿減活動返回結(jié)算價因浮點問題導(dǎo)致不精準問題'

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    6465

    瀏覽量

    110298
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8843

    瀏覽量

    84946
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    195

    瀏覽量

    15710

原文標題:Git: 說說我們的版本控制^o^實用干貨篇

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    分布式控制系統(tǒng)

    分布式控制系統(tǒng)分布式控制系統(tǒng) (distributed control systems,簡稱DCS),又稱為分散控制系統(tǒng),分散型控制系統(tǒng),集散控制系統(tǒng).行業(yè)內(nèi)業(yè)稱4C技術(shù)既Contro
    發(fā)表于 03-01 22:19

    基于STM和MSP的分布式多步進電機控制系統(tǒng)設(shè)計

    本帖最后由 南中南 于 2016-1-7 11:05 編輯 針對多步進電機控制系統(tǒng)的要求,設(shè)計了基于STM32和MSP430的分布式多步進電機控制系統(tǒng)。分享下
    發(fā)表于 01-07 10:16

    分布式控制系統(tǒng)的組成是什么?

    由多臺計算機分別控制生產(chǎn)過程中多個控制回路,同時又可集中獲取數(shù)據(jù)、集中管理和集中控制的自動控制系統(tǒng)分布式控制系統(tǒng)采用微處理機分別
    發(fā)表于 03-13 09:02

    如何去設(shè)計分布式車身控制系統(tǒng)?

    分布式車身控制系統(tǒng)的結(jié)構(gòu)是怎樣構(gòu)成的?分布式車身控制系統(tǒng)有哪些功能?
    發(fā)表于 05-13 07:03

    在RT-Thread studio上使用GIT進行工程管理

    1、如何在RT-Thread studio上使用GIT進行工程管理  Git 是目前最先進的分布式版本控制系統(tǒng)。什么是
    發(fā)表于 09-19 17:05

    LabVIEW用于分布式測量與控制系統(tǒng)

    LabVIEW用于分布式測量與控制系統(tǒng):如果您需要創(chuàng)建一個分布式測量與控制系統(tǒng),LabVIEW將提供簡化的系統(tǒng)集成。
    發(fā)表于 07-24 11:28 ?44次下載

    Freelance 2019發(fā)布 是分布式控制系統(tǒng)的最新版本

    Freelance最初版本發(fā)布于1994年,是ABB針對過程工業(yè)提供的經(jīng)濟高效的分布式控制系統(tǒng)(DCS)解決方案。它結(jié)合了DCS與可編程邏輯控制器(PLC)的優(yōu)點,具有易用性、可擴展性、靈活性和可靠性的特點。Freelance
    發(fā)表于 12-06 16:19 ?4927次閱讀

    Git是什么?Git的基本使用資料說明

      Git是什么? Git是目前世界上最先進的分布式版本控制系統(tǒng)(沒有之一)。
    發(fā)表于 05-29 17:56 ?1次下載
    <b class='flag-5'>Git</b>是什么?<b class='flag-5'>Git</b>的基本使用資料說明

    SVN與Git的最主要的區(qū)別?

    Git是目前世界上最先進的分布式版本控制系統(tǒng)。
    發(fā)表于 07-08 10:46 ?5395次閱讀

    Git在實際工作中的基本使用方法

    代碼版本控制對于我們嵌入軟件開發(fā)崗是一項基礎(chǔ)、必備的技能,需要熟練掌握。實際工作中常用的版本控制系統(tǒng)
    的頭像 發(fā)表于 09-14 18:12 ?2499次閱讀

    Git在實際工作中的使用方法

    代碼版本控制對于我們嵌入軟件開發(fā)崗是一項基礎(chǔ)、必備的技能,需要熟練掌握。實際工作中常用的版本控制系統(tǒng)
    的頭像 發(fā)表于 09-21 09:54 ?3061次閱讀
    <b class='flag-5'>Git</b>在實際<b class='flag-5'>工作</b>中的使用方法

    開源的分布式版本控制系統(tǒng)Git配置

    ? 今天帶著大家來學習Git,這是一個開源的分布式版本控制系統(tǒng),幫助我們進行項目的管理更迭。 其實關(guān)于Git的命令也不是一定需要記憶,但畢竟
    的頭像 發(fā)表于 03-09 13:47 ?1429次閱讀

    世界上最先進分布式版本控制系統(tǒng)Git介紹

    世界上最先進的分布式版本控制系統(tǒng)。 簡單理解版本控制就是:比如你修改了代碼,然后提交修改,系統(tǒng)
    的頭像 發(fā)表于 06-09 17:40 ?1978次閱讀

    一文詳解Git分布式版本控制系統(tǒng)

    Git 是一個免費的、開源的分布式版本控制系統(tǒng),可以快速高效地處理從小型到大型的各種項目。 Git 的特色是分支,人家圖標上都敢這么畫了
    的頭像 發(fā)表于 10-14 09:48 ?725次閱讀

    分布式大屏控制系統(tǒng)工作原理

    分布式大屏控制系統(tǒng)是一種基于分布式計算、云計算和大數(shù)據(jù)技術(shù)的控制系統(tǒng),具有高效、穩(wěn)定、靈活的特點。該系統(tǒng)通過將各個子
    的頭像 發(fā)表于 01-29 14:24 ?616次閱讀