第27周JavaSpringboot git初識

Git 課程筆記

一、Git 的介紹

1. Git 的誕生背景

Git 是 Linux 內核的作者 Linus Torvalds 為了更好地管理 Linux 內核開發而創建的版本控制系統。在 Linux 內核開發初期,由于開發者眾多,協作成本很高,后來使用了 BitKeeper 工具來輔助協作,但后來由于合作結束,Linus Torvalds 決定自己開發一套版本管理系統,這就是 Git。Git 是開源的,可以在 GitHub 上找到該項目。

2. Git 的作用

Git 的主要作用是幫助我們控制版本。如果沒有版本管理系統,我們在開發過程中可能會遇到很多問題,比如無法回到之前的版本、文件備份占用大量空間、多人協作時文件合并困難等。Git 能夠很好地解決這些問題。

二、Git 的安裝與配置

1. Git 的安裝

Git 的安裝相對容易,可以在官網找到不同操作系統的安裝包。以 Mac OS 為例,可以從官網下載安裝器,然后按照提示進行安裝。安裝完成后,可以通過 git --version 命令驗證是否安裝成功。

2. Git 的配置

在使用 Git 之前,需要進行一些配置,比如設置用戶名和郵箱。可以使用以下命令進行配置:

git config --global user.name "你的用戶名"
git config --global user.email "你的郵箱"

三、Git 的重要概念

1. Git、GitHub 和 GitLab

Git 是一個版本控制系統,GitHub 和 GitLab 是基于 Git 的代碼托管平臺。GitHub 是目前世界上最大的代碼托管平臺,很多開源項目都在上面。GitLab 則更適合企業內部使用,可以搭建私有的代碼托管平臺。

2. 工作區、暫存區和本地倉庫

工作區是我們平時編寫代碼的地方,當我們想要把工作區的變動提交到版本控制系統時,需要先將文件添加到暫存區,然后再提交到本地倉庫。

3. HEAD、分支和遠程倉庫

HEAD 指向當前所在的提交,分支是開發中的不同線路,遠程倉庫是團隊協作時用來共享代碼的倉庫。

四、單人開發者如何使用 Git

1. 基本工作流程

單人開發的基本工作流程包括創建項目、添加文件、提交變更等。可以使用 git init 創建新的 Git 項目,使用 git add 將文件添加到暫存區,使用 git commit 提交變更。

示例:創建項目并提交變更
  1. 創建項目目錄

    mkdir myproject
    cd myproject
    
  2. 初始化 Git 項目

    git init
    
  3. 創建并編輯文件

    touch README.md
    echo "My Project" >> README.md
    
  4. 添加文件到暫存區

    git add README.md
    
  5. 提交變更

    git commit -m "Initial commit"
    

2. 實際開發場景

在實際開發中,可能會遇到很多問題,比如提交錯誤、想要撤銷變更、查看不同版本之間的差異等。可以使用 git reset 回退版本,使用 git stash 暫時存儲未提交的變更,使用 git diff 查看差異。

示例:回退版本
  1. 查看提交歷史

    git log
    
  2. 回退到上一個版本

    git reset --hard HEAD~1
    
示例:暫存未提交的變更
  1. 暫存變更

    git stash
    
  2. 查看暫存列表

    git stash list
    
  3. 應用暫存的變更

    git stash pop
    
示例:查看差異
  1. 查看工作區與暫存區的差異

    git diff
    
  2. 查看暫存區與本地倉庫的差異

    git diff --staged
    

五、多人協作下如何使用 Git

1. 基本流程

多人協作的基本流程包括創建項目、克隆項目、提交變更、拉取遠程代碼等。可以使用 git clone 克隆遠程項目,使用 git push 將本地代碼推送到遠程倉庫,使用 git pull 拉取遠程代碼。

示例:克隆項目并提交變更
  1. 克隆遠程項目

    git clone https://github.com/username/myproject.git
    
  2. 進入項目目錄

    cd myproject
    
  3. 創建并切換到新分支

    git checkout -b new-feature
    
  4. 編輯文件并添加到暫存區

    git add .
    
  5. 提交變更

    git commit -m "Add new feature"
    
  6. 推送變更到遠程倉庫

    git push origin new-feature
    

2. 沖突解決

在多人協作中,可能會遇到沖突,比如兩個人修改了同一個文件的同一部分。解決沖突的方法是手動修改沖突部分,然后重新提交。

示例:解決沖突
  1. 拉取遠程代碼

    git pull origin main
    
  2. 解決沖突

    # 手動修改沖突部分
    
  3. 添加解決沖突的文件

    git add .
    
  4. 提交解決沖突的變更

    git commit -m "Resolve conflict"
    
  5. 推送變更到遠程倉庫

    git push origin new-feature
    

3. 工作流

常見的 Git 工作流包括功能分支工作流、GitFlow 工作流等。功能分支工作流是為每個功能創建一個分支,開發完成后合并到主分支。GitFlow 工作流則更加復雜,包括開發分支、發布分支、熱修復分支等。

功能分支工作流
  1. 創建功能分支

    git checkout -b feature-branch
    
  2. 開發功能

    # 編輯文件
    
  3. 提交功能

    git add .
    git commit -m "Add feature"
    
  4. 合并功能到主分支

    git checkout main
    git merge feature-branch
    
  5. 刪除功能分支

    git branch -d feature-branch
    
GitFlow 工作流
  1. 創建開發分支

    git checkout -b develop
    
  2. 創建功能分支

    git checkout -b feature-branch develop
    
  3. 開發功能

    # 編輯文件
    
  4. 提交功能

    git add .
    git commit -m "Add feature"
    
  5. 合并功能到開發分支

    git checkout develop
    git merge feature-branch
    
  6. 創建發布分支

    git checkout -b release-branch develop
    
  7. 發布版本

    git tag -a v1.0 -m "Release version 1.0"
    
  8. 合并發布分支到主分支和開發分支

    git checkout main
    git merge release-branch
    git checkout develop
    git merge release-branch
    
  9. 刪除發布分支

    git branch -d release-branch
    
  10. 創建熱修復分支

    git checkout -b hotfix-branch main
    
  11. 修復問題

    # 編輯文件
    
  12. 提交修復

    git add .
    git commit -m "Fix bug"
    
  13. 合并熱修復到主分支和開發分支

    git checkout main
    git merge hotfix-branch
    git checkout develop
    git merge hotfix-branch
    
  14. 刪除熱修復分支

    git branch -d hotfix-branch
    

六、在 IDEA 中優雅地使用 Git

IDEA 集成了 Git 功能,可以方便地進行版本控制操作。可以使用 IDEA 的圖形界面進行提交、切換分支、對比代碼等操作。

示例:在 IDEA 中提交變更
  1. 打開項目

    # 在 IDEA 中打開項目
    
  2. 編輯文件

    # 編輯文件
    
  3. 查看變更

    # 在 IDEA 的 Version Control 面板中查看變更
    
  4. 提交變更

    # 在 IDEA 的 Version Control 面板中提交變更
    
  5. 切換分支

    # 在 IDEA 的 Version Control 面板中切換分支
    
  6. 合并分支

    # 在 IDEA 的 Version Control 面板中合并分支
    
  7. 解決沖突

    # 在 IDEA 的 Version Control 面板中解決沖突
    

七、Git Ignore

Git Ignore 文件用于指定哪些文件或目錄不需要被 Git 管理。可以使用 *.log 忽略所有日志文件,使用 target/ 忽略整個 target 目錄等。

示例:創建 Git Ignore 文件
  1. 創建 Git Ignore 文件

    touch .gitignore
    
  2. 編輯 Git Ignore 文件

    # 忽略日志文件
    *.log# 忽略目標目錄
    target/
    
  3. 添加并提交 Git Ignore 文件

    git add .gitignore
    git commit -m "Add .gitignore"
    

八、總結

1. Git 常用命令總結

命令描述
git init創建新的 Git 項目
git clone克隆遠程項目
git add將文件添加到暫存區
git commit提交變更
git status查看當前狀態
git log查看提交歷史
git branch查看或創建分支
git checkout切換分支
git merge合并分支
git push將本地代碼推送到遠程倉庫
git pull拉取遠程代碼
git reset回退版本
git stash暫時存儲未提交的變更
git diff查看差異

2. 單人開發與多人協作場景總結

在單人開發中,主要關注基本工作流程和實際開發場景中的問題解決。在多人協作中,需要關注基本流程、沖突解決和工作流。掌握這些內容,可以相對熟練地使用 Git 進行版本控制。

圖形解釋步驟

工作區、暫存區和本地倉庫的關系
工作區 -> 暫存區 -> 本地倉庫git add    git commit
分支的創建和合并
      main|vdevelop <- feature-branch^|git checkout -b feature-branch|vgit merge feature-branch
沖突解決流程
git pull origin main
解決沖突
git add .
git commit -m "Resolve conflict"
git push origin new-feature

希望這些詳細的筆記和圖形解釋步驟對你有所幫助!如果有任何問題或需要進一步的解釋,請隨時告訴我。

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

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

相關文章

藍耘智算|從靜態到動態:探索Maas平臺海螺AI圖片生成視頻功能的強大能力

文章目錄 &#x1f44f;一、技術介紹&#x1f44f;二、平臺注冊&#x1f44f;三、功能體驗&#x1f44f;四、總結 隨著人工智能技術的快速發展&#xff0c;視頻處理和生成技術已經成為了眾多行業關注的熱點。最近&#xff0c;我有機會體驗了藍耘智算平臺的Maas平海螺AI視頻產品…

解決從deepseek接口獲取的流式響應輸出到前端都是undefined的問題

你的前端 EventSource 代碼遇到了 undefined 連續輸出 的問題&#xff0c;通常是因為&#xff1a; AI 返回的內容被拆成了單個字符&#xff0c;導致前端 JSON.parse(event.data).content 獲取到的是單個字符&#xff0c;而 undefined 可能是因為某些數據塊沒有 content 字段。…

VLLM專題(二十七)—使用 Kubernetes

在Kubernetes上部署vLLM是一種可擴展且高效的方式來服務機器學習模型。本指南將引導您使用原生Kubernetes部署vLLM。 此外,您還可以使用以下任意一種方式將vLLM部署到Kubernetes: HelmInftyAI/llmazKServekubernetes-sigs/lwsmeta-llama/llama-stacksubstratusai/kubeaivllm…

前綴和 之 哈希表 之 和 的奇偶與倍數

文章目錄 930.和相同的二元子數組523.連續的子數組和 求解連續子數組的和的問題&#xff0c;常常會使用到這個前綴和的思路&#xff0c;當然當數組存在單調性的時候&#xff0c;可以考慮使用不定長滑動窗口&#xff0c;在這里解釋一下&#xff0c;何為數組的和存在這個單調性&a…

Docker Compose 和 Kubernetes(K8s)對比

Docker Compose 和 Kubernetes&#xff08;K8s&#xff09;在某些方面有相似的功能&#xff0c;但它們的 核心用途和適用場景不同。以下是它們的主要區別和聯系&#xff1a; 1. Docker Compose 和 Kubernetes 的區別 對比項Docker ComposeKubernetes&#xff08;K8s&#xff0…

晶藝代理,100V3.5A高耐壓LA1823完全替換MP9487--啟燁科技有限公司

晶藝品牌LA1823是異步降壓轉換器&#xff0c;COT控制&#xff0c;PFM工作模式, 150KHz/ 250KHz/ 450KHz &#xff0c;開關頻率可調節&#xff0c;輸入電壓4.5~100V&#xff0c;2A平均電流&#xff0c;峰值電流3.5A&#xff0c;采用ESOP8封裝。 晶藝LA1823的特性&#xff1a; 4.…

PLC控制柜在技術創新驅動中功能演進 尤勁恩科技

在智能制造體系中&#xff0c;PLC控制柜不僅承擔著傳統設備控制的基礎功能&#xff0c;更通過工業以太網、PROFIBUS等現場總線技術&#xff0c;構建起分布式控制系統&#xff08;DCS&#xff09;。這種拓撲結構使生產線具備實時數據采集、遠程監控和智能決策能力&#xff0c;顯…

【JavaEE】Spring Boot 日志

目錄 一、日志概述二、使用日志2.1 打印日志2.2 日志框架2.2.1 門面 / 外觀 模式 2.3 日志級別2.3.1 六大分類2.3.2 使用 2.4 日志級別配置2.5 日志的持久化2.6 日志文件分割2.7 日志文件格式2.8 Slf4j 簡單打印日志 一、日志概述 ?志主要是為了發現問題, 分析問題, 定位問題…

代碼隨想錄算法訓練營第34天 | 62.不同路徑 63. 不同路徑 II 整數拆分 不同的二叉搜索樹 (跳過)

62.不同路徑 62. 不同路徑 - 力扣&#xff08;LeetCode&#xff09; 本題大家掌握動態規劃的方法就可以。 數論方法 有點非主流&#xff0c;很難想到。 代碼隨想錄 視頻講解&#xff1a;動態規劃中如何初始化很重要&#xff01;| LeetCode&#xff1a;62.不同路徑_嗶哩嗶哩_b…

uniapp APP權限彈框

效果圖 第一步 新建一個頁面&#xff0c;設置透明 {"path": "pages/permissionDisc/permissionDisc","style": {"navigationBarTitleText": "","navigationStyle": "custom","app-plus": {&…

網絡安全證書培訓機構有哪些

一、前言少敘 記得剛入行的時候&#xff0c;想考一個證書來裝裝門面&#xff0c;結果發現費用太高了&#xff0c;比當時一個月的工資都高&#xff0c;感嘆網絡安全這幫人真舍得花錢&#xff0c;遂放棄。后來入職網絡安全公司&#xff0c;考了一個CISP&#xff0c;在工作中逐漸…

torch.argsorttorch.gather

文章目錄 1. 舉例說明2. pytorch 代碼 1. 舉例說明 torch.argsort 的作用是可以將矩陣中的元素進行從小到大排序&#xff0c;得到對應的序號。假設我們有一個向量a表示如下 a [ 8 , 7 , 6 , 9 , 7 ] \begin{equation} a[8,7,6,9,7] \end{equation} a[8,7,6,9,7]?? 那么從小…

JSON數據格式介紹

2.5 JSON 2.5.1.JSON格式的用途 在開發中凡是涉及到『跨平臺數據傳輸』&#xff0c;JSON格式一定是首選 2.5.2.JSON格式的說明 1.JSON數據兩端要么是{}&#xff0c;要么是[] {}定義JSON對象[]定義JSON數組 2.JSON對象的格式是&#xff1a;json {key:value,key:value,...,ke…

(性能測試)性能測試工具 2.jmeter的環境搭建 3jmeter元件和4使用實例 5jmeter元件和參數化

目錄 性能測試工具 性能測試工具 jemeter環境搭建 jmeter的常用目錄介紹 jmeter修改語言和主題--jmeter界面的漢化 jmeter元件 jmeter元件和組件的介紹 jmeter的作用域原則 jmeter的執行順序 案例&#xff1a;執行順序 jmeter使用案例 jmeter線程組的介紹 jmeter…

Qt程序基于共享內存讀寫CodeSys的變量

文章目錄 1.背景2.結構體從CodeSys導出后導入到C2.1.將結構體從CodeSys中導出2.2.將結構體從m4文件提取翻譯成c格式 3.添加RTTR注冊信息4.讀取PLC變量值5.更改PLC變量值6.Qt讀寫CodeSys的共享內存 1.背景 在文章【基于RTTR在C中實現結構體數據的多層級動態讀寫】中&#xff0c…

大模型架構全景解析:從Transformer到未來計算范式

1. Transformer 架構 核心模型 GPT-4、BERT、T5、LLaMA、通義千問、文心ERNIE 關鍵技術 多頭注意力&#xff1a;GPT-4 使用 96 頭注意力位置編碼創新&#xff1a;LLaMA 采用 RoPE&#xff08;旋轉位置編碼&#xff09;&#xff0c;Claude 3 引入 ALiBi歸一化優化&#xff1…

AI第一天 自我理解筆記--微調大模型

目錄 1. 確定目標&#xff1a;明確任務和數據 2. 選擇預訓練模型 3. 數據預處理 (1) 數據清洗與格式化 (2) 劃分數據集 (3) 數據加載與批處理 4. 構建微調模型架構 (1) 加載預訓練模型 (2) 修改模型尾部&#xff08;適配任務&#xff09; (3) 凍結部分層&#xff08;可…

計算機視覺——深入理解卷積神經網絡與使用卷積神經網絡創建圖像分類算法

引言 卷積神經網絡&#xff08;Convolutional Neural Networks&#xff0c;簡稱 CNNs&#xff09;是一種深度學習架構&#xff0c;專門用于處理具有網格結構的數據&#xff0c;如圖像、視頻等。它們在計算機視覺領域取得了巨大成功&#xff0c;成為圖像分類、目標檢測、圖像分…

[C++面試] 關于deque

一、入門 1、deque與vector的區別 deque的迭代器包含以下信息&#xff1a; 當前緩沖區指針&#xff08;current_buffer&#xff09;當前元素在緩沖區內的位置&#xff08;current&#xff09;中控器的位置&#xff08;map&#xff09; 每次移動迭代器時&#xff0c;需檢查是…

服務性能防腐體系:基于自動化壓測的熔斷機制

01# 背景 在系統架構的演進過程中&#xff0c;項目初始階段都會通過壓力測試構建安全護城河&#xff0c;此時的服務性能與資源水位保持著黃金比例關系。然而在業務高速發展時期&#xff0c;每個沖刺周期都被切割成以業務需求為單位的開發單元&#xff0c;壓力測試逐漸從必選項…