Git 基本操作(一)

目錄

git add

git?commit?

git log?

git status

git diff

git 版本回退?

git reset


git add

? ? ? ? git add 指令為添加工作區中的文件到暫存區中。

git add file_name; //將工作區名稱為file_name的文件添加進暫存區
git add  .; //將工作區中的所有文件添加進暫存區

git?commit?

? ? ? ? git commit 指令為將暫存區中的文件添加到master分支中。

git commmit -m "這里為對這一次文件提交的描述"

? ? ? ? ?需要注意的是,git commit -m 中的 -m 選項是必須要含有的,表示添加的日志信息是什么。

git log?

? ? ? ? git log 用于查看提交的日志。

git log

? ? ? ? 通過上圖我們不難發現,在 commit 后面有一個很長的 16 進制序列數字,這個數字我們稱之為一個 commit id,它是經過哈希算法獲得的具有唯一性的 id,可以用于定位每一次的文 件提交。

git log --pretty==oneline //將提交日志信息以一行的方式顯示出來

????????git add 以及 git commit 之后,工作區中的文件就已經被添加到了版本庫中的 master 分支中。?

? ? ? ? 1.此時查看版本庫的目錄結構,在目錄中生成了 HEAD 指針。

? ? ? ? HEAD 指針指向了,版本庫目錄中的 master 分支。?

? ? ? ? 2.在目錄中也生成了 index 目錄,里面存放的就是工作區的文件被添加進暫存區之后生成的索引文件。

? ? ? ? 3.在目錄中生成了 objects 目錄,這個目錄里面存儲的是,工作區的文件被每次修改并 git add 以及 git commit 之后,生成的 Git 對象,這個 Git 對象可以用于歷史文件版本的恢復,里面存儲的是每一次 git commit 之后生成的 commit id 哈希值。

? ? ? ? 4.在目錄中生成了 master 目錄,這個目錄里面存放的是,最新一次提交的 commit id

? ? ? ? 通過這個 commit id 找到了上一次提交的 commit id

? ? ? ? 根據,上一次提交的 commit id 可以找到對應的 blob 對象,這是在工作區的文件被 git add 之后創建的對象,里面存儲文件內容。?

? ? ? ? 根據 blob 對象的哈希值,可以讀取文件的內容。

git status

????????我們對工作區中的 ReadMe 文件進行修改,此時工作區中的 ReadMe 文件和本地倉庫中的 ReadMe 文件就是不想通的,我們怎樣查看當前的本地倉庫的狀態呢?

? ? ? ? 可以使用 git status 指令,查看本地倉庫的狀態。

? ? ? ? 通過顯示的內容我們可以得知,我們已經對工作區中的 ReadMe 文件進行了修改,但是還沒有 進行 add commit。?

? ? ? ? git add 之后,查看本地倉庫狀態。

? ? ? ? 通過上圖我們發現,git add 之后提示我們還沒有 commit。?

? ? ? ? git commit 之后,查看本地倉庫狀態。

? ? ? ? 通過上圖發現,git commit 之后,我們已經不需要再去提交任何內容。?

git diff

? ? ? ? 還是上述的場景我們對工作區中的?ReadMe 文件進行了修改,那么我們怎么樣得知工作區ReadMe 文件和版本庫中的 ReadMe 文件的區別呢?
? ? ? ? 我們可以使用 git diff 指令查看其區別。

? ? ? ? 區別就是我們在工作區中的 ReadMe 文件中添加了 hello yjd!!! 字符串。?

git 版本回退?

? ? ? ? 有些時候我們可能會對同一個文件進行多次更改和提交,但是有時候我們發現最新的版本不符合我們的要求,此時我們就要回退到歷史的版本,此時我們就需要使用 git 版本回退的相關指令。

git reset

? ? ? ? 在 git 版本回退時,我們使用 git reset 指令進行版本的回退。

? ? ? ??還是上述場景,我們對 ReadMe文件進行了修改,修改前我們簡稱為 git ,修改之后我們簡稱為?git/yjd。git 版本的回退有很多的選項,圖示如下。

工作區暫存區版本庫選項
git/yjdgit/yjdgit--soft
git/yjdgitgit--mixed(默認選項
gitgitgit--hard(慎用

? ? ? ? 工作區中存儲的就是文件本身,而暫存區中存儲的是 git add 之后的在 object 目錄下生成的 blob 對象的哈。什么是 blob 對象?

? ? ? ? 我們知道,一旦我們一 git add 文件,就會在 object 目錄下生成一個 git 對象,git 對象用于版本控制,而 blob 對象就是 git 對象中的一個對象,可以理解為這個對象中存放的就是文件中的內容。

? ? ? 每次 git add 都會生成一個 git 對象,但是如果此次的修改沒有修改內容,就不會生成一個新的 blob 對象,而是會復用之前的已經存在的 blob 對象,兩個 git 對象通過同一個 哈希id 找到了同一個 blob 對象。

? ? ? ?暫存區中存儲的就是 blob 對象的 哈希id ,而版本庫中存儲的就是 object 目錄下的 blob 對象。

  • --soft 選項:會將 版本庫中的 blob 對象回退,但是不會將暫存區中的 哈希id 和工作區的文件進行回退。
  • --mixed 選項:會將 版本庫中的 blob 對象回退,會將暫存區中的 哈希id 回退,不會將工作區中的文件回退。
  • --hard 選項:會將 版本庫,暫存區,工作區都回退,但是建議不要使用 --hard 選項,因為有可能有人正在使用這個工作區中的文件,你使用 --hard 選項進行回退,就會導致當前寫入的全部文件刪除,所以慎用。

? ? ? ? 如何去進行回退呢?我們使用 --hard 選項進行演示。

? ? ? ? 1.先通過 git log 查看歷史的提交日志,選取回退的版本。

? ? ? ? 2.使用 git reset --hard 哈希id 的方式進行回退。

? ? ? ? 3.查看是否回退。

?

? ? ? ? 此時確實是已經完成了回退。?

? ? ? ? 如果此次回退我們后悔了,想回退到之前,還可以進行回退嗎?

? ? ? ? 此時查詢 git log 日志查詢出來的 commit id 已經是第一次 commit id 了,所以通過當前的 git log 是不可以進行撤銷此次回退的,我們可以根據之前 git log 查詢結果進行撤銷此次回退。

? ? ? ? 但是,如果我們在打印完了上次的 git log 之后就關閉了終端,此時再次打開終端是就無法查看上一次的 git log 結果了,此時想進行撤銷回退, 可以使用 git reflog 查看歷史指令進行此次回退的撤銷。

? ? ? ? 即使在歷史的日志中,對應的哈希id部分哈希id也可以進行歷史版本的回退。?

? ? ? ? 說白了,無論是正常的回退還是撤銷回退,其實就是通過 commit 之后的 commit id (哈希id) 將此時的 工作區 暫存區 版本庫 中的相關信息設置為對應的 哈希id 所處的版本。?

? ? ? ? ?所以 git 版本控制,其實就是 commit id(哈希id) 的控制。

? ? ? ? 以上便是本期的所有內容。

? ? ? ? 本期內容到此結束^_^

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

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

相關文章

docker打包鏡像時提示permission denied

sudo usermod -aG docker $USER //讓當前用戶加入docker用戶組 sudo systemctl restart docker //重新啟動docker服務 newgrp docker //更新組權限 來源:docker命令出現permission denied的解決方法_permission denied while trying to connect…

Deepseek常用高效提問模板!

DeepSeek高效提問秘籍大放送! 掌握這些實用提問模板,能讓你與DeepSeek的對話更加精準、高效! 1. 精準闡述需求 提問時務必清晰明確地表達問題或任務。例如: 欠佳的提問:“隨便說點內容。”優化后的提問&#xff1a…

地震資料偏移成像中,多次波(多次反射波)處理

在地震資料偏移成像中,多次波(多次反射波)會降低成像質量,導致虛假同相軸和構造假象。處理多次波需要結合波場分離和壓制技術,以下是主要方法和開源算法參考: 1. 多次波處理的核心方法 (1) 基于波場分離的…

quickbi finebi 測評(案例講解)

quickbi & finebi 測評 國產BI中入門門檻比較低的有兩個,分別是quickbi和finebi。根據我的經驗通過這篇文章做一個關于這兩款BI的測評文章。 quickbi分為個人版、高級版、專業版、私有化部署四種。這篇文章以quickbi高級版為例,對quickbi進行分享。…

【進階】--函數棧幀的創建和銷毀詳解

目錄 一.函數棧幀的概念 二.理解函數棧幀能讓我們解決什么問題 三.相關寄存器和匯編指令知識點補充 四.函數棧幀的創建和銷毀 4.1.調用堆棧 4.2.函數棧幀的創建 4.3 函數棧幀的銷毀 一.函數棧幀的概念 --在C語言中,函數棧幀是指在函數調用過程中,…

基于大模型預測的輸尿管癌診療全流程研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 二、大模型預測輸尿管癌的原理與方法 2.1 大模型技術概述 2.2 用于輸尿管癌預測的大模型選擇 2.3 數據收集與處理 2.4 模型訓練與優化 三、術前風險預測與手術方案制定 3.1 術前風險預測指標 3.2 大模型預測…

【Machine Learning Q and AI 讀書筆記】- 03 小樣本學習

Machine Learning Q and AI 中文譯名 大模型技術30講,主要總結了大模型相關的技術要點,結合學術和工程化,對LLM從業者來說,是一份非常好的學習實踐技術地圖. 本文是Machine Learning Q and AI 讀書筆記的第3篇,對應原…

PETR和位置編碼

PETR和位置編碼 petr檢測網絡中有2種類型的位置編碼。 正弦編碼和petr論文提出的3D Position Embedding。transformer模塊輸入除了qkv,還有query_pos和key_pos。這里重點記錄下query_pos和key_pos的生成 query pos的生成 先定義reference_points, shape為(n_query…

Ubuntu搭建 Nginx以及Keepalived 實現 主備

目錄 前言1. 基本知識2. Keepalived3. 腳本配置4. Nginx前言 ?? 找工作,來萬碼優才:?? #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器,無代碼爬取,就來:bright.cn Java基本知識: java框架 零基礎從入門到精通的學習路線 附開源項目面經等(超全)【Java項目】實戰CRU…

文章記單詞 | 第56篇(六級)

一,單詞釋義 interview /??nt?vju?/: 名詞:面試;采訪;面談動詞:對… 進行面試;采訪;接見 radioactive /?re?di???kt?v/:形容詞:放射性的&#xff…

MATLAB函數調用全解析:從入門到精通

在MATLAB編程中,函數是代碼復用的核心單元。本文將全面解析MATLAB中各類函數的調用方法,包括內置函數、自定義函數、匿名函數等,幫助提升代碼效率! 一、MATLAB函數概述 MATLAB函數分為以下類型: 內置函數&#xff1a…

哈希表筆記(二)redis

Redis哈希表實現分析 這份代碼是Redis核心數據結構之一的字典(dict)實現,本質上是一個哈希表的實現。Redis的字典結構被廣泛用于各種內部數據結構,包括Redis數據庫本身和哈希鍵類型。 核心特點 雙表設計:每個字典包含兩個哈希表&#xff0…

PDF嵌入隱藏的文字

所需依賴 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>9.0.0</version><type>pom</type> </dependency>源碼 /*** PDF工具*/ public class PdfUtils {/*** 在 PD…

RAG工程-基于LangChain 實現 Advanced RAG(預檢索-查詢優化)(下)

Multi-Query 多路召回 多路召回流程圖 多路召回策略利用大語言模型&#xff08;LLM&#xff09;對原始查詢進行拓展&#xff0c;生成多個與原始查詢相關的問題&#xff0c;再將原始查詢和生成的所有相關問題一同發送給檢索系統進行檢索。它適用于用戶查詢比較寬泛、模糊或者需要…

【業務領域】PCIE協議理解

PCIE協議理解 提示&#xff1a;這里可以添加系列文章的所有文章的目錄&#xff0c;目錄需要自己手動添加 PCIE學習理解。 文章目錄 PCIE協議理解[TOC](文章目錄) 前言零、PCIE掌握點&#xff1f;一、PCIE是什么&#xff1f;二、PCIE協議總結物理層切速 鏈路層事務層6.2 TLP的路…

Jupyter notebook快捷鍵

文章目錄 Jupyter notebook鍵盤模式快捷鍵&#xff08;常用的已加粗&#xff09; Jupyter notebook鍵盤模式 命令模式&#xff1a;鍵盤輸入運行程序命令&#xff1b;這時單元格框線為藍色 編輯模式&#xff1a;允許你往單元格中鍵入代碼或文本&#xff1b;這時單元格框線是綠色…

Unity圖片導入設置

&#x1f3c6; 個人愚見&#xff0c;沒事寫寫筆記 &#x1f3c6;《博客內容》&#xff1a;Unity3D開發內容 &#x1f3c6;&#x1f389;歡迎 &#x1f44d;點贊?評論?收藏 &#x1f50e;Unity支持的圖片格式 ??BMP:是Windows操作系統的標準圖像文件格式&#xff0c;特點是…

Spark-小練試刀

任務1&#xff1a;HDFS上有三份文件&#xff0c;分別為student.txt&#xff08;學生信息表&#xff09;result_bigdata.txt&#xff08;大數據基礎成績表&#xff09;&#xff0c; result_math.txt&#xff08;數學成績表&#xff09;。 加載student.txt為名稱為student的RDD…

內存安全的攻防戰:工具鏈與語言特性的協同突圍

一、內存安全&#xff1a;C 開發者永恒的達摩克利斯之劍 在操作系統內核、游戲引擎、金融交易系統等對穩定性要求苛刻的領域&#xff0c;內存安全問題始終是 C 開發者的核心挑戰。緩沖區溢出、懸空指針、雙重釋放等經典漏洞&#xff0c;每年在全球范圍內造成數千億美元的損失。…

OceanBase數據庫-學習筆記1-概論

多租戶概念 集群和分布式 隨著互聯網、物聯網和大數據技術的發展&#xff0c;數據量呈指數級增長&#xff0c;單機數據庫難以存儲和處理如此龐大的數據。現代應用通常需要支持大量用戶同時訪問&#xff0c;單機數據庫在高并發場景下容易成為性能瓶頸。單點故障是單機數據庫的…