【Git】基本指令

工作區、暫存區、版本庫

  • 工作區:是在電腦上你要寫代碼或文件的目錄。
  • 暫存區:英文叫 stage 或 index。一般存放在 .git 目錄下的 index 文件(.git/index)中,我們把暫存區有時也叫作索引(index)。
  • 版本庫:又名倉庫,英文名 repository 。工作區有一個隱藏目錄 .git ,它不算工作區,而是 Git 的版本庫。這個版本庫里面的所有文件都可以被 Git 管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

下面這個圖展示了工作區、暫存區和版本庫之間的關系:

在這里插入圖片描述

圖中左側為工作區,右側為版本庫。Git 的版本庫里存了很多東西,其中最重要的就是暫存區。

? 在創建 Git 版本庫時,Git 會為我們自動創建一個唯一的 master 分支,以及指向 master 的一個指
針叫 HEAD。(分支和HEAD的概念后面再說)

? 當對工作區修改(或新增)的文件執行 git add 命令時,暫存區目錄樹的文件索引會被更新。

? 當執行提交操作 git commit 時,master 分支會做相應的更新,可以簡單理解為暫存區的目錄樹才會被真正寫到版本庫中。

由上述描述我們便能得知:通過新建或粘貼進?錄的?件,并不能稱之為向倉庫中新增文件,而只是在工作區新增了文件。必須要通過使用 git addgit commit 命令才能將文件添加到倉庫中進行管理!!!

基本指令

在包含 .git 的目錄下新建一個 ReadMe 文件,我們可以使用 git add 命令可以將文件添加到暫存區:
? 添加一個或多個文件到暫存區: git add [file1] [file2] ...
? 添加指定目錄到暫存區,包括子目錄: git add [dir]
? 添加當前目錄下的所有文件改動到暫存區: git add .再使? git commit 命令將暫存區內容添加到本地倉庫中:
? 提交暫存區全部內容到本地倉庫中: git commit -m "message"
? 提交暫存區的指定?件到倉庫區: git commit [file1] [file2] ... -m "message"
注意 git commit 后面的 -m 選項,要跟上描述本次提交的 message,由用戶完成,這部分內容絕對不能省略,并要好好描述,是用來記錄你的提交細節,是給我們人看的。
例如:
在這里插入圖片描述
git commit 命令執行成功后會告訴我們,1個文件被改動(就是我們新添加的ReadMe文件),插入了一行內容(ReadMe有一行內容)。
我們還可以多次 add 不同的文件,而只 commit 一次便可以提交所有文件,是因為需要提交的文件是通通被 add 到暫存區中,然后一次性 commit 暫存區的所有修改。如
在這里插入圖片描述
截至目前為止,我們已經更夠將代碼直接提交至本地倉庫了。我們可以使用 git log 命令,來查看下歷史提交記錄。
在這里插入圖片描述
該命令顯示從最近到最遠的提交日志,并且可以看到我們 commit 時的日志消息。
如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上 --pretty=oneline 參數:
在這里插入圖片描述
需要說明的是,我們看到的一大串類似 23807c5…56eed6 的是每次提交的 commit id版本號),Git 的 commit id 不是1,2,3……遞增的數字,而是一個 SHA1 計算出來的一個非常大的數字,用十六進制表示(你看到的 commit id 和我的肯定不一樣,以你自己的為準)。

查看 .git 文件

先來看看我們的 .git 的目錄結構:
在這里插入圖片描述

  1. index 就是我們的暫存區,add 后的內容都是添加到這里的。

  2. HEAD 就是我們的默認指向 master 分支的指針:
    在這里插入圖片描述
    而默認的 master 分支,其實就是
    在這里插入圖片描述
    打印的 82a32a9010e8dfc2c94124d973c744d92a120a53 是什么東西呢?保存的就是當前最新
    commit id

  3. objects 為 Git 的對象庫,里面包含了創建的各種版本庫對象及內容。當執行 git add 命令時,暫存區的目錄樹被更新,同時工作區修改(或新增)的文件內容被寫入到對象庫中的一個新的對象中,就位于 “.git/objects” 目錄下,讓我們來看看這些對象有何用處:
    在這里插入圖片描述
    查找 object 時要將 commit id 分成2部分,其前2位是文件夾名稱,后38位是文件名稱。

找到這個文件之后,一般不能直接看到里面是什么,該類文件是經過 sha (安全哈希算法)加密過的文件,好在我們可以使影 git cat-file 命令來查看版本庫對象的內容:
在這里插入圖片描述

這就是我們最近?次的提交

其中,還有?行tree 1fbf42c98753beefa45a2e0f48bd171dac697592,我們使用同樣的方法,看看結果:
在這里插入圖片描述
在看 test 對應的 8836513e5d67c172edd7e79031674c9bb2ffff69
在這里插入圖片描述

這是我們對ReadMe做的修改!!被git記錄了下來!!

總結一下,在本地的 git 倉庫中,有幾個文件或者目錄很特殊

  • index: 暫存區, git add 后會更新該內容。
  • HEAD: 默認指向 master 分?的一 個指針。
  • refs/heads/master: 文件里保存當前 master 分支的最新 commit id
  • objects: 包含了創建的各種版本庫對象及內容,可以簡單理解為放了 git 維護的所有修改。

學習到這里,我們已經清楚了如何向倉庫中添加文件,并且對于工作區、暫存區、版本庫也有了一定的認識。那么我們再展示一種添加文件的場景,能加深對工作區、暫存區、版本庫的理解,示例如下:
在這里插入圖片描述
提交后發現打印了 1 file changed, 0 insertions(+), 0 deletions(-) ,意思是只有一個文件改變了,這時我們提出了疑問,不是新增了兩個文件嗎?

再來回憶下, git add 是將文件添加到暫存區, git commit 是將暫存區的內容添加到本地倉庫中。由于我們并沒有使用 git add file5file5 就不在暫存區中維護,所以我們 commit 的時候其實只是把已經在暫存區的 file4 提交了,而遺漏了工作區的 file5

如何提交 file5 呢?很簡單,再次add , commit 即可。

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

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

相關文章

從數據到決策,永洪科技助力良信電器“智”領未來

在數字經濟浪潮洶涌的時代,數字化轉型已成為企業增強競爭力、實現可持續發展的必由之路。良信電器,作為國內知名的電氣設備制造企業,積極響應時代號召,攜手永洪科技,共同開啟了數字化轉型的新篇章。 上海良信電器股份有…

帶觸屏筆記本關閉屏幕觸控方法

以聯想yogaPro16s2023為例 該筆記本顯示器為觸控屏,不想使用屏幕觸控功能; 關閉方法如下: Win11與win10操作一樣 鼠標放到開始,右鍵,選擇,設備管理器 找到,人體學輸入設備,符合H…

大模型——基于 DIFY 的自動化數據分析實戰

基于 DIFY 的自動化數據分析實戰 簡介: 本文介紹如何使用DIFY搭建數據分析自動化流程,實現從輸入需求到查詢數據庫、LLM分析再到可視化輸出的全流程。基于經典的employees數據集和DIFY云端環境,通過LLM-SQL解析、SQL執行、LLM數據分析及ECharts可視化等模塊,高效完成數據分…

中原銀行:從“小機+傳統數據庫”升級為“OceanBase+通用服務器”,30 +系統成功上線|OceanBase DB大咖說(十五)

OceanBase《DB 大咖說》第 15 期,我們邀請到了中原銀行金融科技部數據團隊負責人,呂春雷。本文為本期大咖說的精選。 呂春雷是一位資歷深厚的數據庫專家,從傳統制造企業、IT企業、甲骨文公司到中原銀行,他在數據庫技術與運維管理…

django各種mixin用法

在 Django 中,Mixin 是一種用于擴展類功能的設計模式。通過 Mixin,可以在不修改原有類的情況下,為其添加新的方法或屬性。Django 中的 Mixin 廣泛應用于視圖(View)、表單(Form)、模型(Model)等組件中。以下是 Django 中常見 Mixin 的用法和示例: 一、視圖(View)中的…

SpringBoot集成Netty實現Ws和Tcp通信

本教程將指導你如何在 Spring Boot 項目中集成 Netty&#xff0c;實現 WebSocket 和 TCP 通信。以下是詳細的步驟和代碼示例。 環境準備 在 你的pom.xml 中添加 Netty 依賴&#xff1a; <dependency><groupId>io.netty</groupId><artifactId>nett…

與中國聯通技術共建:通過obdiag分析OceanBase DDL中的報錯場景

中國聯通軟件研究院&#xff08;簡稱聯通軟研院&#xff09;在全面評估與廣泛調研后&#xff0c;在 2021年底決定采用OceanBase 作為基礎&#xff0c;自研分布式數據庫產品CUDB&#xff08;即China Unicom Database&#xff0c;中國聯通數據庫&#xff09;。目前&#xff0c;該…

機器學習-隨機森林解析

目錄 一、.隨機森林的思想 二、隨機森林構建步驟 1.自助采樣 2.特征隨機選擇 3構建決策樹 4.集成預測 三. 隨機森林的關鍵優勢 ?**(1) 減少過擬合** ?**(2) 高效并行化** ?**(3) 特征重要性評估** ?**(4) 耐抗噪聲** 四. 隨機森林的優缺點 ?優點 ?缺點 五.…

深度集成DeepSeek,智問BI@GPT引領商業智能“深度思考“革命

當下傳統的數據分析工具如同顯微鏡&#xff0c;雖然能幫助我們看到數據的細節&#xff0c;卻難以揭示數據背后的深層規律。億信華辰最新升級的智問BIGPT產品&#xff0c;通過深度集成DeepSeek大模型&#xff0c;首次在商業智能領域實現了"深度思考"功能。這項突破性創…

Mysql安裝方式

方式一&#xff1a;安裝包安裝 下載安裝包 官網直接下載&#xff1a;https://dev.mysql.com/downloads/ 安裝配置 2.1、雙擊剛剛下載好的msi文件&#xff0c;開始安裝MySQL。 2.2、選擇自定義模式Custom安裝 2.3、點擊選擇自己電腦對應的mysql安裝目錄 2.5、繼續點擊下一步&…

unity調用本地部署deepseek全流程

unity調用本地部署deepseek全流程 deepseek本地部署 安裝Ollama 搜索并打開Ollama官網[Ollama](https://ollama.com/download) 點擊Download下載對應版本 下載后點擊直接安裝 安裝deepseek大語言模型 官網選擇Models 選擇deepseek-r1&#xff0c;選擇對應的模型&#xff0…

Linux - 網絡基礎(應用層,傳輸層)

一、應用層 1&#xff09;發送接收流程 1. 發送文件 write 函數發送數據到 TCP 套接字時&#xff0c;內容不一定會立即通過網絡發送出去。這是因為網絡通信涉及多個層次的緩沖和處理&#xff0c;TCP 是一個面向連接的協議&#xff0c;它需要進行一定的排隊、確認和重傳等處理…

wxWidgets GUI 跨平臺 入門學習筆記

準備 參考 https://wiki.wxwidgets.org/Microsoft_Visual_C_NuGethttps://wiki.wxwidgets.org/Tools#Rapid_Application_Development_.2F_GUI_Buildershttps://docs.wxwidgets.org/3.2/https://docs.wxwidgets.org/latest/overview_helloworld.htmlhttps://wizardforcel.gitb…

使用joblib 多線程/多進程

文章目錄 1. Joblib 并行計算的兩種模式多進程(Multiprocessing,適用于 CPU 密集型任務)多線程(Multithreading,適用于 I/O 密集型任務)2. Joblib 的基本用法3. Joblib 多進程示例(適用于 CPU 密集型任務)示例:計算平方4. Joblib 多線程示例(適用于 I/O 密集型任務)…

神旗視訊Linux client 3.4版本發布和開源

在國產化替代的大潮中&#xff0c;神旗視訊推出專為統信 Linux、麒麟 Linux OS 打造打造的開源視頻會議客戶端&#xff0c;全面適配國產 x86 及 arm64 架構 CPU&#xff0c;以穩定、安全、靈活的特性&#xff0c;為國產操作系統用戶帶來前所未有的高效溝通體驗&#xff0c;同時…

HCIA-IP路由動態-RIP

一、概念 動態路由是指路由器通過運行動態路由協議&#xff08;RIP、OSPF等&#xff09;&#xff0c;自動學習和發現網絡中的路由信息。路由器之間通過交換路由協議數據包&#xff0c;互相通告自己所知道的網絡信息&#xff0c;從而構建和更新路由表。 二、RIP(路由信息協議)…

VEC系列-RabbitMQ 入門筆記

消息隊列&#xff08;MQ&#xff09;對于開發者來說是一個經常聽到的詞匯&#xff0c;但在實際開發中&#xff0c;大多數人并不會真正用到它。網上已經有很多關于 MQ 概述和原理的詳細講解&#xff0c;官網文檔和技術博客也都介紹得很深入&#xff0c;因此&#xff0c;我在這里…

js中??是什么意思

在 JavaScript 中&#xff0c;?? 是一個邏輯運算符&#xff0c;稱為 空值合并運算符&#xff08;Nullish Coalescing Operator&#xff09;。它用于檢查左側的值是否為 null 或 undefined&#xff0c;如果是&#xff0c;則返回右側的值&#xff1b;否則返回左側的值。 語法 …

常見限流算法

限流是指在高并發、大流量請求的情況下&#xff0c;限制新的流量對系統的訪問&#xff0c;以保證系統服務的安全性。常見的限流算法及其詳細介紹如下&#xff1a; 計數器算法&#xff08;Fixed Window Counter&#xff09; 原理&#xff1a;使用一個固定時間窗口內的計數器來…

YOLOv12本地部署教程——42%速度提升,讓高效目標檢測觸手可及

YOLOv12 是“你只看一次”&#xff08;You Only Look Once, YOLO&#xff09;系列的最新版本&#xff0c;于 2025 年 2 月發布。它引入了注意力機制&#xff0c;提升了檢測精度&#xff0c;同時保持了高效的實時性能。在保持速度的同時&#xff0c;顯著提升了檢測精度。例如&am…