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

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

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

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

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

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

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

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

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

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

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

工作原理

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

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

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

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

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

淺談下我們實(shí)際場(chǎng)景常用的命令吧

1、配置


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


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


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


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


#更針對(duì)性的
git config --system -l 
git config --local -l 
git config --global -l 


#查看遠(yuǎn)程庫信息
git remote -v


#移除遠(yuǎn)程地址信息 
git remote remove origin


#添加新的地址:
git remote add origin 遠(yuǎn)程路徑


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


#編輯模式修改
git config -e


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


2、常用命令



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


#拷貝一份遠(yuǎn)程倉庫,也就是下載一個(gè)項(xiàng)目。
git clone


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


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


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


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


#從遠(yuǎn)程獲取代碼庫
git fetch 




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


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


#合并
git merge


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


#查看倉庫當(dāng)前的狀態(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
#更簡(jiǎn)潔的查看
git reflog


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


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


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




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


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

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

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

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

1、軟件環(huán)境

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

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

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

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

2、分支命名

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

master 分支

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

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

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

如果在release分支測(cè)試出問題,需要回歸驗(yàn)證develop分支看否存在此問題。

hotfix /repair 分支

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

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

develop 分支

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

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

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

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

commit提交規(guī)范

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

(scope):

type表示 動(dòng)作類型,可分為:

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

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

feat:新增 xxx 功能

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

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

docs:變更 xxx 文檔

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

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

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

subject表示 簡(jiǎn)短描述,最好不要超過 60 個(gè)字。

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

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

    關(guān)注

    41

    文章

    6509

    瀏覽量

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

    關(guān)注

    12

    文章

    8958

    瀏覽量

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

    關(guān)注

    0

    文章

    196

    瀏覽量

    15720

原文標(biāo)題:Git: 說說我們的版本控制^o^實(shí)用干貨篇

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

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

    在RT-Thread studio上使用GIT進(jìn)行工程管理

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

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

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

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

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

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

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

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

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

    Git在實(shí)際工作中的基本使用方法

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

    Git在實(shí)際工作中的使用方法

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

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

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

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

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

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

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

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

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