【Git】5 個分區的切換方式及示例

LuckiBit

目錄

    • 1. **工作區(Working Directory)**
    • 2. **緩存區(Stage/Index)**
    • 3. **本地倉庫(Local Repository)**
    • 4. **遠程倉庫(Remote Repository)**
    • 5. **貯藏區(Stash)**
    • 6. **完整的 Git 分區切換場景示例**
      • **6.1 查看當前狀態**
      • **6.2 從工作區切換到緩存區**
      • **6.3 從緩存區切換到本地倉庫**
      • **6.4 從本地倉庫推送到遠程倉庫**
      • **6.5 從遠程倉庫拉取更新**
      • **6.6 進行代碼存儲(使用貯藏區)**
    • **總結**
    • 7. **結束語**

在 Git 中,五個分區(貯藏區、工作區、緩存區、本地倉庫、遠程倉庫)之間的切換涉及不同的 Git 命令。以下是各個分區的切換方式:


1. 工作區(Working Directory)

這是你正在編輯代碼的地方,就是本地的文件夾。

  • 從本地倉庫切換到工作區(檢出代碼)

    git checkout <branch-name>  # 切換到某個分支
    git checkout <commit-hash> -- <file>  # 還原某個文件到指定版本
    
  • 從緩存區撤銷到工作區(取消 git add

    git reset HEAD <file>  # 取消暫存,回到工作區
    

2. 緩存區(Stage/Index)

git add 之后的文件進入緩存區(暫存區)。

  • 從工作區切換到緩存區(添加到暫存區)

    git add <file>  # 添加文件到暫存區
    git add .       # 添加所有修改的文件到暫存區
    
  • 從緩存區切換回工作區(撤銷暫存)

    git reset HEAD <file>  # 取消暫存
    

3. 本地倉庫(Local Repository)

git commit 之后的文件進入本地倉庫。

  • 從緩存區切換到本地倉庫(提交到本地倉庫)

    git commit -m "提交信息"  # 提交暫存區的文件到本地倉庫
    
  • 從本地倉庫切換到工作區(回退提交)

    git reset --soft HEAD~1  # 回退上一次提交,但保留暫存區的修改
    git reset --mixed HEAD~1 # 回退上一次提交,同時撤銷暫存區的修改
    git reset --hard HEAD~1  # 回退上一次提交,并丟棄所有修改
    

4. 遠程倉庫(Remote Repository)

git push 之后,提交進入遠程倉庫。

  • 從本地倉庫推送到遠程倉庫

    git push origin <branch-name>  # 推送到遠程分支
    
  • 從遠程倉庫拉取到本地倉庫

    git fetch origin <branch-name>  # 獲取遠程分支更新,但不合并
    git pull origin <branch-name>   # 拉取遠程更新并合并
    

5. 貯藏區(Stash)

貯藏區用于臨時保存當前的工作狀態,方便切換分支或同步代碼。

  • 從工作區/緩存區切換到貯藏區(存儲當前進度)

    git stash        # 暫存當前工作區和緩存區的修改
    git stash push -m "描述"  # 帶描述的 stash
    
  • 從貯藏區恢復到工作區/緩存區

    git stash pop    # 恢復最新的 stash 并刪除
    git stash apply  # 應用最新的 stash 但不刪除
    
  • 查看貯藏區內容

    git stash list   # 查看所有存儲的狀態
    git stash show   # 查看最近一次的 stash 詳情
    

6. 完整的 Git 分區切換場景示例

假設你正在開發一個網站項目 my_project,你要修改 index.html 文件,并將代碼提交到遠程倉庫。


6.1 查看當前狀態

首先,確認你的 Git 倉庫狀態:

git status

如果 index.html 已修改,Git 會顯示:

On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes)modified:   index.html

此時 index.html 處于 工作區


6.2 從工作區切換到緩存區

將修改添加到緩存區:

git add index.html

再次運行 git status

Changes to be committed:(use "git restore --staged <file>..." to unstage)modified:   index.html

此時 index.html 進入 緩存區


6.3 從緩存區切換到本地倉庫

提交代碼:

git commit -m "更新首頁內容"

輸出:

[main 123abc] 更新首頁內容1 file changed, 5 insertions(+)

此時 index.html 已存入 本地倉庫


6.4 從本地倉庫推送到遠程倉庫

git push origin main

輸出:

Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 345 bytes | 345.00 KiB/s, done.
To github.com:user/my_project.git456def..123abc  main -> main

代碼成功推送到 遠程倉庫


6.5 從遠程倉庫拉取更新

如果有其他人修改了代碼,你可以同步遠程倉庫:

git pull origin main

如果有新代碼更新,Git 會自動合并到你的 本地倉庫工作區


6.6 進行代碼存儲(使用貯藏區)

假設你正在修改 style.css,但需要切換分支處理其他問題:

git stash

Git 會顯示:

Saved working directory and index state WIP on main: 123abc 更新首頁內容

此時 style.css 進入 貯藏區

當你完成其他任務后,恢復代碼:

git stash pop

代碼恢復到 工作區緩存區


總結

操作命令
工作區 → 緩存區git add <file>
緩存區 → 本地倉庫git commit -m "message"
本地倉庫 → 遠程倉庫git push origin <branch>
遠程倉庫 → 本地倉庫git fetch / git pull
緩存區 → 工作區(撤銷暫存)git reset HEAD <file>
本地倉庫 → 工作區(回退提交)git reset --soft/mixed/hard HEAD~1
工作區/緩存區 → 貯藏區git stash
貯藏區 → 工作區/緩存區git stash pop / git stash apply

這樣,你可以自由切換 Git 的五個分區 🚀

7. 結束語

  1. 本節內容已經全部介紹完畢,希望通過這篇文章,大家對 Git 有了更深入的理解和認識。
  2. 感謝各位的閱讀和支持,如果覺得這篇文章對你有幫助,請不要吝惜你的點贊和評論,這對我們非常重要。再次感謝大家的關注和支持!點我關注??

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

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

相關文章

【計算機視覺】YOLO語義分割

一、語義分割簡介 1. 定義 語義分割&#xff08;Semantic Segmentation&#xff09;是計算機視覺中的一項任務&#xff0c;其目標是對圖像中的每一個像素賦予一個類別標簽。與目標檢測只給出目標的邊界框不同&#xff0c;語義分割能夠在像素級別上區分不同類別&#xff0c;從…

MATLAB之數據分析圖系列:從二維到三維(直接套用)

MATLAB以其強大的矩陣運算和可視化功能&#xff0c;成為科研、工程領域的標配工具。本文提供從基礎二維圖形到復雜三維模型的即用代碼塊&#xff0c;涵蓋數據標注、多圖排版、動態演示等核心技巧 所有代碼均經過MATLAB 2023a實測&#xff0c;替換數據即可生成專業級圖表。” …

HTTP響應數據包全面解析:結構、原理與最佳實踐

目錄 HTTP響應概述 HTTP響應數據包結構 2.1 狀態行 2.2 響應頭 2.3 空行 2.4 響應體 HTTP狀態碼詳解 3.1 1xx信息響應 3.2 2xx成功響應 3.3 3xx重定向 3.4 4xx客戶端錯誤 3.5 5xx服務器錯誤 常見HTTP響應頭字段 響應體內容類型 緩存控制機制 實際HTTP響應示例分…

H.264編碼解析與C++實現詳解

一、H.264編碼核心概念 1.1 分層編碼結構 H.264采用分層設計&#xff0c;包含視頻編碼層&#xff08;VCL&#xff09;和網絡抽象層&#xff08;NAL&#xff09;。VCL處理核心編碼任務&#xff0c;NAL負責封裝網絡傳輸數據。 1.2 NALU單元結構 // NAL單元頭部結構示例 struc…

快速入手-基于Django-rest-framework的自身組件權限認證(九)

1、在對應的視圖函數里增加認證&#xff08;局部起作用&#xff0c;不全局生效&#xff09; 導入類&#xff1a; from rest_framework.authentication import ( BasicAuthentication, SessionAuthentication, ) from rest_framework.permissions import IsAuthentica…

受控組件和非受控組件的區別

在 React 中&#xff0c;?受控組件&#xff08;Controlled Components&#xff09;? 和 ?非受控組件&#xff08;Uncontrolled Components&#xff09;? 是處理表單元素的兩種不同方式&#xff0c;它們的核心區別在于 ?數據管理的方式 和 ?與 React 的交互模式。 受控組件…

邁向云原生:理想汽車 OLAP 引擎變革之路

在如今數據驅動的時代&#xff0c;高效的分析引擎對企業至關重要。理想汽車作為智能電動汽車的領軍企業&#xff0c;面臨著海量數據分析的挑戰。本文將展開介紹理想汽車 OLAP 引擎從存算一體向云原生架構演進的變革歷程&#xff0c;以及在此過程中面臨的挑戰&#xff0c;以及是…

ZLMediaKit 源碼分析——[3] ZLToolKit 中EventPoller之網絡事件處理

系列文章目錄 第一篇 基于SRS 的 WebRTC 環境搭建 第二篇 基于SRS 實現RTSP接入與WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 環境搭建 第四篇 WebRTC學習一&#xff1a;獲取音頻和視頻設備 第五篇 WebRTC學習二&#xff1a;WebRTC音視頻數據采集 第六篇 WebRTC學習三…

【分布式】分布式限流方案解析

文章目錄 固定窗口限流方案?實現方式?優點?缺點? 滑動窗口限流方案?實現方式?優點?缺點? 令牌桶限流方案?實現方式?優點?缺點? 漏斗限流方案?實現方式?優點?缺點? 在分布式系統蓬勃發展的當下&#xff0c;系統面臨的流量挑戰日益復雜。為確保系統在高并發場景下…

WPS JS宏編程教程(從基礎到進階)-- 第三部分:JS宏編程語言開發基礎

第三部分:JS宏編程語言開發基礎 @[TOC](第三部分:JS宏編程語言開發基礎)**第三部分:JS宏編程語言開發基礎**1. 變量與數據類型**變量聲明:三種方式****示例代碼****數據類型判斷****實戰:動態處理單元格類型**2. 運算符全解析**算術運算符****易錯點:字符串拼接 vs 數值相…

Python - 爬蟲-網頁抓取數據-庫urllib

urllib庫是Python內置的HTTP請求庫。無需額外安裝&#xff0c;可以直接使用。urllib庫包含以下四個模塊。 urllib.request - 打開和讀取 URL。urllib.error - 包含 urllib.request 拋出的異常。urllib.parse - 解析 URL。urllib.robotparser - 解析 robots.txt 文件。 1、reque…

C++進階知識復習 1~15

C 進階總復習 &#xff08;1~15&#xff09; 目的1. 介紹下程序從編寫到可執行的整個過程2. C中的auto和decltype的區別3. 介紹下多態的實現原理4. C中的new[] 和delete[] 為什么一定要配對使用&#xff1f;5. C中malloc申請的內存 可以使用delete釋放嘛6. 什么情況下會出現內存…

輸電線路航空標志球:低空飛行的安全路標 / 恒峰智慧科技

在現代社會&#xff0c;隨著航空業的快速發展&#xff0c;低空飛行活動日益頻繁。為了確保飛行安全&#xff0c;避免飛機與高壓電線等障礙物發生碰撞&#xff0c;輸電線路航空標志球應運而生。這種裝置被廣泛應用于高壓輸電線路上&#xff0c;尤其是超高壓和跨江輸電線&#xf…

Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件詳解

Debian/Ubuntu的networking的/etc/network/interfaces配置文件詳解 Debian/Ubuntu 的 /etc/network/interfaces 配置文件詳解 在 Debian/Ubuntu 系統中&#xff0c;/etc/network/interfaces 是傳統網絡接口配置文件&#xff0c;用于定義網絡接口的靜態/動態配置。以下是逐項解…

OpenCV 圖形API(或稱G-API)(1)

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 引言 OpenCV 圖形API&#xff08;或稱G-API&#xff09;是一個新的OpenCV模塊&#xff0c;旨在使常規圖像處理更快且更便攜。通過引入一種新的基于圖的執行…

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解題思路 這一題大的思路上不難想到就是一個動態規劃的思路。我們分別…

win10之mysql server 8.0.41安裝

一 mysql server 下載 官網下載地址頁面 https://dev.mysql.com/downloads/mysql/二 免裝版使用步驟 1 解壓 下載完成后,解壓文件夾,如下所示: 2 執行安裝命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…

第十二屆藍橋杯省賽軟件類(cc++組)

第一題&#xff08;空間&#xff09; 解題思路 答案 #include <stdio.h>int main() {// 計算256MB對應的字節數&#xff0c;1MB 1024KB&#xff0c;1KB 1024Blong long total_bytes 256 * 1024 * 1024; // 每個32位二進制整數占4個字節&#xff08;32 / 8 4&#xf…

C++ 新特性 | C++ 11 | 移動語義

文章目錄 一、移動語義1、為什么需要移動語義&#xff1f;2、怎么“偷”&#xff1f;——右值引用&#xff08;&&&#xff09;3、如何實現移動語義&#xff1f;——移動構造函數/賦值4、什么時候觸發移動&#xff1f;5、移動 vs 拷貝 一、移動語義 1、為什么需要移動語…

wsl下ubuntu安裝寶塔

在 WSL (Windows Subsystem for Linux) 下的 Ubuntu 中安裝寶塔面板的步驟如下&#xff1a; 1. 確保 WSL 環境正常 已安裝 WSL 2 并啟用 Ubuntu 發行版&#xff08;推薦 Ubuntu 20.04/22.04&#xff09;。 在 PowerShell 中檢查 WSL 版本&#xff1a; wsl --list --verbose 如…