項目一系列-第2章 Git版本控制

第2章 Git版本控制

2.1 Git概述

Git是什么?Git是一個分布式版本控制工具,于管理開發過程中的文件。

Git有哪些作用

  • 遠程備份:Git可以將本地代碼備份到遠程服務器,防止數據丟失。
  • 多人協作:Git運行多個開發者在同一個代碼庫協同工作。開發者可以共享代碼、合并變更、解決沖突等。
  • 代碼回溯:Git可以返回之前的代碼版本。用于修復錯誤和恢復代碼。
  • 版本切換:Git可以切換分支或者不同的提交切換代碼版本。

2.2 Git環境準備

1、安裝Git

2、進行全局配置

3、配置SSH公鑰

4、建立本地倉庫及遠程倉庫

安裝Git怎么做

下載地址:https://git-scm.com/download/win

全局配置要幾步

1、設置用戶信息(必須配置,用于遠程連接)

git config --global user.name "ychenchen"
git config --global user.email "ycc@itcast.cn"

2、查看配置信息

git config --list

3、初始化本地倉庫及遠程倉庫

git init

配置SSH公鑰要幾步?

1、生成SSH公鑰

  • ssh-keygen -t rsa
    
  • 不斷回車

  • 如果公鑰已經存在,則自動覆蓋

2、獲取公鑰

cat ~/.ssh/id_rsa.pub

3、到Gitee中設置SSH公鑰

4、驗證是否配置成功

ssh -T git@gitee.com

2.3 Git常用命令

常見命令主要分為三大類:

  • 本地倉庫命令
  • 遠程倉庫命令
  • 分支命令

本地倉庫命令

# 初始化本地倉庫
git init
# 將所有文件提交到暫存區
git add .
# 將暫存區文件提交到本地倉庫
git commit -m"第一次提交所有文件到本地倉庫"
# 將暫存區文件取消暫存
git reset
# 查看詳細的提交日志
git log
# 查看簡潔的提交日志
git reflog
# 切換到指定版本
git reset --hard [version]

遠程倉庫命令

# 添加關聯的遠程倉庫
git remote add <shortname> <url>
# 查看關聯的遠程倉庫
git remote [-v]
# 提交本地倉庫代碼到遠程倉庫
git push origin master
# --set-upstream 建立起和遠端分支的關聯,后續可省分支名和遠端名
git push [-f] [--set-upstream] [遠端名稱 [本地分支名][:遠端分支名] ]
# 克隆遠程倉庫到本地
git clone <url>
# 拉取最新的遠程倉庫
git pull <shortname> <branch>
# fatal: refusing to merge unrelated histories
git pull --allow-unrelated-histories

分支命令

# 列出所有本地分支
git branch
# 列出所有遠程分支
git branch -r
# 列出所有本地分支和遠程分支
git branch -a
# 創建分支
git branch <branchName>
# 切換分支
git checkout <branchName>
git checkout -b <branchName> # 創建并切換分支
# 合并分支:在當前分支合并其他分支
git merge <branchName>
# 刪除分支
git branch -d b1 # 刪除分支時,需要做各種檢查
git branch -D b1 # 不做任何檢查,強制刪除

2.3.1 分支創建規則

以下是一些常見的Git分支創建規則:

1、主分支(master)

主分支用于項目的發布和部署,只有穩定的代碼才能被合并到master分支。

master分支上,每一個tag標記一個線上版本。

2、開發分支(develop/dev)

開發分支包含項目的最新代碼,但功能都在從該分支獨立出來的特性分支中開發。

通常命名為developdev

3、特性分支(feature)

特性分支用于開發特定的功能,每個新功能都應在從develop分支創建的feature/xxx形式的特性分支上進行開發和測試。

4、預發布分支(release)

預發布分支用于準備發布新版本,進行最后的測試和調整,從 develop 分支創建以確保代碼穩定,命名格式為release/xxx,其中xxx是具體的版本號。

測試過程中若存在bug需要修復,則直接由開發者在release分支修復并提交。

測試完成之后,將 release 分支合并到 master 和 develop 分支,此時 master 為最新代碼,用作上線。

5、修復分支(hotfix/bugfix)

修復分支用于解決線上緊急bug或修復已知問題,從 master 分支創建以確保修復代碼直接應用于穩定版本,命名格式為hotfix/xxxbugfix/xxx

完成bug修復后將代碼合并到master分支和develop分支,合并完成后可以刪除該分支。

長期穩定存在的分支只有 master 和 develop 分支,別的分支在完成對應的使命之后都會合并到這兩個分支然后被刪除。

簡單總結如下:

分支作用
master線上穩定版本分支
develop衍生出 feature 分支和 release 分支
feature完成特定功能開發的分支,存在多個,功能合并之后刪除
release準備待發布版本的分支,存在多個,版本發布之后刪除
hotfix緊急熱修復分支,存在多個,緊急版本發布之后刪除

分支示意圖如下:

2.3.2 解決沖突

下面是在命令行常見的解決沖突步驟:

  • 使用git status命令查看哪些文件存在沖突。
  • 使用git diff命令查看沖突文件的差異。
  • 手動解決沖突,并驗證解決后是否正確。
  • 使用git add標記為沖突已解決。
  • 使用git commit命令提交解決沖突后的更改。

2.4 忽略文件

.gitignore忽略文件:忽略項目代碼中不需要的文件,一般是編譯文件、臨時文件等,把它們納入版本控制系統中毫無意義。

存放在項目的根目錄。

.gitignore內容:

.git
logs
rebel.xml
target/
!.mvn/wrapper/maven-wrapper.jar
log.path_IS_UNDEFINED
.DS_Store
offline_user.md
*.class### IntelliJ IDEA ###
.idea
*.iws
*.ipr

2.5 IDEA集成Git

2.5.1 在IDEA中配置Git

在idea的settings面板中,【Version Control】=>【Git】

  • 指定Git安裝路徑【Path to Git executable】

2.5.2 IDEA中的操作方法

本地倉庫操作

1、初始化本地倉庫【Create Git Repository】

  • 依次選擇菜單【Version control】—【Create Git Repository】
  • 選擇當前項目根目錄,點擊【OK】

2、克隆遠程倉庫【Clone】

  • 在IDEA的菜單欄中選擇Git,再點擊【Get from Version Control】或者【Clone】
  • 在彈出的【Clone Repository】窗口中輸入遠程倉庫的URL地址和對應的本地倉庫存放目錄,點擊【Clone】按鈕進行倉庫克隆操作

3、將文件加入到暫存區

  • 右鍵文件或項目,選擇【Git】,選擇【Add】
  • 文件變成綠色即為成功

4、將暫存區文件提交到版本庫

  • 右鍵文件或項目,選擇【Git】,選擇【Commit …】
  • 提交本次的日志信息
  • 文件變成黑色即為成功

5、查看日志

  • 右鍵文件或項目,選擇【Git】,選擇【Show History】
  • 展示了提交的日志列表信息即為成功

遠程倉庫操作

1、查看遠程倉庫和添加遠程倉庫

  • 右鍵項目,找到【Git】–>【Manage Remotes…】
  • 在彈出的框中可以查看已經關聯的遠程倉庫,如果沒有,則可以點擊"+"號來新增遠程倉庫

2、推送至遠程倉庫

  • 在當前分支中,點擊【Push…】
  • 在彈出的【Push Commits】窗口中可以看到本次推送的文件,點擊【Push】按鈕即可

3、從遠程倉庫拉取代碼

  • 在當前分支中,點擊【Update Project…】

分支操作

1、查看分支

  • 在【Version control】查看即可
  • 書簽標記代表當前使用分支

2、創建分支

  • 分支窗口中點擊【New Branch】,彈出輸入分支名稱,點擊Create按鈕,完成分支的創建

3、切換分支

  • 點擊要切換的分支,選擇【Checkout】

4、推送分支

  • 點擊當前分支,選擇【Push…】

5、合并分支

  • 點擊要切換的分支,選擇【Merge】

6、解決沖突

  • 推薦點擊【Merge…】
  • 有三個框,根據實際情況合并

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

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

相關文章

Java異常:認識異常、異常的作用、自定義異常

目錄1.什么是異常&#xff1f;1&#xff09;運行時異常2&#xff09;編譯時異常2.異常的作用1&#xff09;Java 異常在定位 BUG 中的核心作用2&#xff09;Java 異常作為方法內部特殊返回值的作用3&#xff09;自定義異常1.什么是異常&#xff1f; Error:代表的系統級別錯誤(屬…

第十九天-輸入捕獲實驗

一、輸入捕獲概述1、輸入捕獲框圖2、輸入捕獲工作詳解①設置輸入捕獲濾波器可以設置濾波&#xff0c;濾除一些高電平脈寬不足的脈沖信號。②設置捕獲極性③輸入捕獲映射④輸入捕獲分頻器這里的捕獲是將計數器的值存入比較寄存器中&#xff0c;分頻次的作用是設置幾個上升沿/下降…

多線程問題,子線程同時操作全局變量,使用后需要清空嗎 ?

背景&#xff1a;目前有一個全局變量 &#xff0c;某個方法中通過多線程&#xff0c;都操作這個變量&#xff0c;向這個全局變量中去添加元素&#xff0c;然后等所有子線程執行完了之后&#xff0c;對這個全局變量進行批量保存&#xff0c;然后這個全局變量還需要手動去清空嗎&…

Netty知識儲備:BIO、NIO、Reactor模型

學習Netty之前&#xff0c;首先先掌握這些基礎知識&#xff1a;阻塞&#xff08;Block&#xff09;與非阻塞&#xff08;Non-Block&#xff09;&#xff0c;同步&#xff08;Synchronous&#xff09;與異步&#xff08;Asynchronous&#xff09;&#xff0c;Java BIO與NIO對比。…

用生成器守住架構,用 AI 放大效率:一套可落地的 AI 編程方法論

背景與問題 現實困境: 直接讓 AI 產出整塊業務代碼&#xff0c;常常與現有架構風格、分層邊界、依賴策略不一致&#xff0c;后續改造成本高&#xff1b;AI 對現實業務語境、領域規則難以精準把握&#xff1b;在既定模板成熟的場景下&#xff0c;代碼生成器往往更快、更整齊。目…

碼頭岸電系統如何保障供電安全?安科瑞絕緣監測及故障定位方案解析

當岸電電網是TN-S系統時&#xff0c;船體未接專用接地線且船舶電網未與岸電零線接通&#xff0c;船舶電網發生單相接地故障時&#xff0c;人站在岸上觸及船體會有觸電危險&#xff0c;零線上可能出現高電壓&#xff0c;單相接地電流大。當船體接專用接地線且船舶電網接入岸電零…

ESP32_u8g2移植

前言 U8g2 是一個用于嵌入式設備的單色圖形庫。U8g2支持單色OLED和LCD&#xff0c;并支持如SSD1306 SSD1315等多種類型的OLED驅動&#xff0c;幾乎市面上常見都支持。 U8g2源碼 download&#xff1a;https://github.com/olikraus/u8g21&#xff1a;環境 ESP32 S3(ESP32-S3-Dev…

MCP實現:.Net實現MCP服務端 + Ollama ,MCP服務端工具調用

本文使用.Net編寫MCP服務端 Ollama &#xff0c;實現簡單MCP調用&#xff0c;代碼僅實現基本演示功能。 文章目錄一、Ollama如何安裝使用二、創建.Net8項目&#xff0c;開發MCP服務端三、開發MCP客戶端&#xff0c;并對接Ollama一、Ollama如何安裝使用 請移步&#xff1a;htt…

Docker的安裝使用以及常見的網絡問題

一、什么是DockerDocker是一種容器化技術&#xff0c;用于快速打包、分發和運行程序。他的核心思想是"一次構建&#xff0c;到處運行"&#xff0c;通過將應用及其依賴的環境打包到一個輕量級、可移植的容器中&#xff0c;實現跨平臺一致運行。二、Docker的安裝1.Cent…

C++入門學習

1.命名空間的介紹首先我們看到如下的代碼&#xff0c;在C語言中&#xff1a;#include <stdio.h> #include <stdlib.h> int rand 10; // C語言沒辦法解決類似這樣的命名沖突問題&#xff0c;所以C提出了namespace來解決 int main() {printf("%d\n", rand…

解決python錯誤:playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page() page.goto(url)page.wait_for_load_state(networkidle) 在Python環境中運行以上代碼后報錯: page.wait_for_load_…

爬蟲逆向之雷池waf

本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的。否則由此產生的一切后果均與作者無關&#xff01; 雷池waf概念 雷池 WAF&#xff08;SafeLine&#xff09;是長亭科技開源的一款 Web 應用防火墻&#xff0c;部署在網站前面&#xff0c;把所有進來的 HTTP/…

23種設計模式解析--行為型

行為型模式&#xff08;協作的藝術&#xff09; 觀察者模式 觀察者模式詳解 模式定義 觀察者模式&#xff08;Observer Pattern&#xff09;是一種行為設計模式&#xff0c;用于建立對象間一對多的依賴關系。當一個對象&#xff08;Subject&#xff09;狀態變化時&#xff0c;所…

Linux系統之lua 詳解

命令簡介 lua 是 Lua 語言的解釋器&#xff0c;用于加載和執行 Lua 程序&#xff08;包括文本源碼和預編譯的二進制文件&#xff09;。它支持兩種運行模式&#xff1a;批處理模式&#xff08;執行指定腳本文件&#xff09;和交互式模式&#xff08;逐行讀取并執行輸入的命令&am…

visual studio 無明顯錯誤,但是無法編譯成功解決—仙盟創夢IDE

往后面查看rror CS0246: 未能找到類型或命名空間名“SimpleClass”(是否缺少 using 指令或程序集引用?)修復阿雪技術觀在科技發展浪潮中&#xff0c;我們不妨積極投身技術共享。不滿足于做受益者&#xff0c;更要主動擔當貢獻者。無論是分享代碼、撰寫技術博客&#xff0c;還是…

《論文閱讀》傳統CoT方法和提出的CoT Prompting的區分

論文&#xff1a;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models作者對傳統CoT方法和本文提出的CoT Prompting的區分。1. 傳統方法的局限性 (1) 基于微調的CoT&#xff08;Rationale-Augmented Training&#xff09; 實現方式&#xff1a;需人工標注大…

Minio 高性能分布式對象存儲

1、什么是對象存儲? 描述: 對象存儲&#xff08;Object Storage&#xff09;是一種存儲數據的計算機體系結構&#xff0c;它以對象的形式存儲和管理數據。與傳統的文件系統和塊存儲不同&#xff0c;對象存儲將數據作為對象存儲在分布式的存儲集群中&#xff0c;每個對象都有一…

[深度學習] 大模型學習4-RAG技術全景解析

在大語言模型基礎知識一文中&#xff0c;檢索增強生成&#xff08;Retrieval-Augmented Generation&#xff0c;簡稱 RAG&#xff09;技術作為構建大語言模型&#xff08;Large Language Model&#xff0c;簡稱 LLM&#xff09;應用的一種方式已被簡要提及&#xff0c;本文將詳…

4G/5G無線電單元系統

4G/5G無線電單元系統 ADI公司的核心技術和領域專業知識幫助客戶在全球范圍內規劃、設計、打造更出色的高性能通信系統。 我們的無線電單元(RU)設計平臺利用新一代技術來提供高性能解決方案&#xff0c;幫助客戶消除設計障礙、縮短產品開發周期&#xff0c;加快產品上市時間。 價…

HarvardX TinyML小筆記1(番外2:神經網絡)

1 介紹 圖片來自&#xff1a;https://zh.wikipedia.org/zh-cn/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C 神經網絡一直感覺挺神奇的&#xff0c;江湖也說可解釋性很差&#xff0c;無論如何還是學學吧。借這次學習哈佛的TinyML&#xff0c;也就順帶弄了。 這里…