Git(二):基本操作

文章目錄

  • Git(二):基本操作
    • 添加文件
    • 修改文件
    • 版本回退
    • 撤銷修改
      • 情況一:工作區的代碼還沒有 add
      • 情況?:已經 add 但沒有 commit
      • 情況三:已經 add 并且也 commit
    • 刪除文件

Git(二):基本操作

添加文件

首先我們先來學習一個命令git status,其基本功能為:

  • 顯示工作目錄狀態:git status 會列出當前工作目錄中哪些文件被修改(modified)、未跟蹤(untracked)或存在沖突(conflict)
  • 顯示暫存區狀態:顯示哪些文件已暫存(staged)但未提交,以及哪些文件未暫存但已修改
  • 分支信息:輸出當前分支名稱及與遠程分支的同步狀態(如 “Your branch is up to date with ‘origin/master’”)

例如,我們在工作區中創建一個文件但并沒有add,使用git status就會給出提示:file1并沒有被追蹤,同時暫存區中是干凈的

在這里插入圖片描述

我們add后不commit,再來看一下status:暫存區中有文件等待被commit

在這里插入圖片描述

commit之后暫存區就干凈了:

在這里插入圖片描述

修改文件

首先,我們要明確一個概念:Git跟蹤并管理的是修改,而非文件,這也是Git 比其他版本控制系統設計得優秀的主要原因之一

什么是修改?比如你新增了一行,這就是?個修改,刪除了一行,也是一個修改,更改了某些字符,也是一個修改,刪了一些又加了一些,也是一個修改,甚?創建一個新文件,也算一個修改

讓我們將 ReadMe 文件進行一次修改,此時,倉庫中的 ReadMe 和我們?作區的 ReadMe 是不同的, 使用git status 命令查看:

在這里插入圖片描述

上?的結果告訴我們,ReadMe 被修改過了,但還沒有完成添加與提交。目前,我們只知道文件被修改了,但不知道那里被修改了,這時就需要git diff命令出馬了:

在這里插入圖片描述

git diff [file] 命令?來顯?暫存區和?作區?件的差異,顯?的格式正是Unix通?的diff格式。也可以使? git diff HEAD -- [file] 命令來查看版本庫和?作區?件的區別

接下來只需要正常add和commit即可

版本回退

之前我們也提到過,Git 能夠管理?件的歷史版本,這也是版本控制器重要的能?。如果有?天你發現之前的?作做的出現了很?的問題,需要在某個特定的歷史版本重新開始,這個時候,就需要版本回退的功能

執? git reset 命令?于回退版本,可以指定退回某?次提交的版本。要解釋?下“回退”本質是要將版本庫中的內容進?回退,?作區或暫存區是否回退由命令參數決定:

git reset 命令語法格式為: git reset [--soft | --mixed | --hard] [HEAD]

  • –mixed 為默認選項,使?時可以不?帶該參數。該參數將暫存區的內容退回為指定提交版本內容,?作區?件保持不變。
  • –soft 參數對于?作區和暫存區的內容都不變,只是將版本庫回退到某個指定版本
  • –hard 參數將暫存區與?作區都退回到指定版本。切記?作區有未提交的代碼時不要?這個命令,因為?作區會回滾,你沒有提交的代碼就再也找不回了,所以使?該參數前?定要慎重

在上面我們對ReadMe文件新增了一行“hello world!”,現在我們使用表格來展現:

選項工作區暫存區版本庫
未操作hello git hello worldhello git hello worldhello git hello world
–softhello git hello worldhello git hello worldhello git
–mixed(默認)hello git hello worldhello githello git
–hardhello githello githello git

HEAD選項說明:

  • 可直接寫成 commit id,表示指定退回的版本
  • HEAD 表示當前版本
  • HEAD^ 上?個版本
  • HEAD^^ 上上?個版本

也可以使? ?數字表示:

  • HEAD~0 表示當前版本
  • HEAD~1 上?個版本
  • HEAD^2 上上?個版本

接下來我們演示一下:ReadMe文件經修改后現在有兩行,commit后master指向最后一次修改

在這里插入圖片描述

接下來使用reset命令,帶上hard選項,HEAD直接寫成ReadMe文件第一次修改的commit id

在這里插入圖片描述

我們發現ReadMe文件回退到了第一個版本,而且file1也被刪除了,因為file1是在之后創建的

那我們要是后悔了怎么辦?只需要把commit id改成modify ReadMe的:
在這里插入圖片描述

我們發現ReadMe文件“回退”到了第二個版本,file1也回來了,HEAD重新指向了modify ReadMe

但是如果我們隔了幾天重新登陸服務器,找不到對應的歷史commit id怎么辦?此時就用到了git reflog命令:

在這里插入圖片描述

值得說的是,Git 的版本回退速度?常快,因為 Git 在內部有個指向當前分?(此處是master)的

HEAD 指針, refs/heads/master ?件?保存當前 master 分?的最新 commit id 。當我們

在回退版本的時候,Git 僅僅是給 refs/heads/master 中存儲?個特定的version,可以簡單理解

成如下?意圖:

在這里插入圖片描述

撤銷修改

如果我們在我們的?作區寫了很?時間代碼,越寫越寫不下去,覺得??寫的實在是垃圾,想恢復到 上?個版本

情況一:工作區的代碼還沒有 add

我們在ReadMe文件中新增一行,不add到暫存區

在這里插入圖片描述
第一種方法就是直接修改,但如果不記得新增代碼是哪些呢?因此這種方式效率很低,而且容易出錯,此時就需要用到git checkout -- [file]命令,git checkout -- [file] 命令可以讓工作區的文件回到最近?次add 或commit 時的狀態。要注意 git checkout -- [file] 命令中的 – 很重要,切記不要省略,?旦省略,該命令就變為其他意思了,后面我們再說

在這里插入圖片描述

情況?:已經 add 但沒有 commit

add后還是保存到了暫存區呢?怎么撤銷呢?

在這里插入圖片描述

讓我們來回憶?下學過的 git reset 回退命令,該命令如果使用–mixed 參數,可以將暫存區 的內容退回為指定的版本內容,但?作區?件保持不變。那我們就可以回退下暫存區的內容了!!!

在這里插入圖片描述

此時就變成了第一種情況,再使用git checkout -- [file] 命令就可以了

在這里插入圖片描述

情況三:已經 add 并且也 commit

直接使用git reset --hard HEAD^ 命令回退到上?個版本!不過,這是有條件的,就是 你還沒有把自己的本地版本庫推送到遠程(后面會講)

在這里插入圖片描述

我們使用表格對上面三種情況進行總結:

操作工作區暫存區版本庫
git check – [filename]xxx code
git reset --mixedxxx codexxx code
git reset --hard HEAD^xxx codexxx codexxx code

注:xxx code是新增內容,空白表示未新增

刪除文件

第一種方法:

  1. 在工作區中執行rm -f 文件名命令
  2. git add
  3. git commit

在這里插入圖片描述

第二種方法:

  1. 在工作區中執行git rm 文件名命令
  2. git commit
    在這里插入圖片描述

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

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

相關文章

nginx + ffmpeg 實現 rtsp視頻實時播放和歷史播放

nginx和ffmpeg 的安裝請參考我的另一篇文章 Nginxrtmpffmpeg搭建視頻轉碼服務_nginx-rtmp-module-master-CSDN博客 目錄 1、整體方案設計如圖 2、nginx下目錄創建和配置文件創建 3、創建視頻流生成腳本 4、修改nginx配置 5、管理界面 (video.html) 6、ffmpeg后臺啟動 …

全國產!瑞芯微 RK3576 ARM 八核 2.2GHz 工業核心板—硬件說明書

前 言 本文為創龍科技 SOM-TL3576 工業核心板硬件說明書,主要提供 SOM-TL3576 工業 核心板的產品功能特點、技術參數、引腳定義等內容,以及為用戶提供相關電路設計指導。 為便于閱讀,下表對文檔出現的部分術語進行解釋;對于廣泛認同釋義的術語,在此不做注釋。 硬件參考…

web3 瀏覽器注入 (如 MetaMask)

以下是關于 瀏覽器注入方式(如 MetaMask) 的完整詳解,包括原理、使用方法、安全注意事項及常見問題解決方案: 1. 核心原理 當用戶安裝 MetaMask 等以太坊錢包擴展時,錢包會向瀏覽器的 window 對象注入一個全局變量 window.ethereum,這個對象遵循 EIP-1193 標準,提供與區…

解密提示詞工程師:AI 時代的新興職業

大家好!在人工智能飛速發展的當下,有一個新興職業正悄然崛起——提示詞工程師。他們雖不如數據科學家般廣為人知,卻在 AI 應用領域發揮著獨特且關鍵的作用。 何為提示詞工程師? 提示詞工程師專注于設計和優化與 AI 模型進行交互的提示詞&…

linux 下 jenkins 構建 uniapp node-sass 報錯

背景: jenkins 中構建 uniapp 應用 配置: 1. 將windows HbuilderX 插件目錄下的 uniapp-cli 文件夾復制到 服務器 /var/jenkins_home/uniapp-cli 2. jenkins 構建步驟增加 執行 shell ,內容如下 echo ">> 構建中..."# 打包前端 export LANGen_US.UTF-8…

QT常見問題(1)

QT常見問題(1) 1.問題描述 Qt在編譯器中直接運行沒有任何問題,但是進入exe生成目錄直接雙擊運行就報錯:文件無法定位程序輸入點_zn10qarraydata10deallocateepsyy于動態鏈接庫。 2.問題原因 這個錯誤通常是由于程序運行時找不…

『大模型筆記』第2篇:并發請求中的 Prefill 與 Decode:優化大語言模型性能

『大模型筆記』并發請求中的 Prefill 與 Decode:優化大語言模型性能 文章目錄 一. Token 生成的兩個階段:Prefill 和 Decode1.1. 指標分析1.2. 資源利用率分析二. 并發處理機制2.1. 靜態批處理 vs 持續批處理(Static Batching vs. Continuous Batching)2.2. Prefill 優先策略…

JVM(7)——詳解標記-整理算法

核心思想 標記-整理算法同樣分為兩個主要階段,但第二個階段有所不同: 標記階段: 與標記-清除算法完全一致。遍歷所有可達對象(從 GC Roots 開始),標記它們為“存活”。 整理階段: 不再簡單地清…

進程虛擬地址空間

1. 程序地址空間回顧 我們在學習語言層面時,會了解到這樣的空間布局圖,我們先對他進行分區了解: 如果以靜態static修飾的變量就會當成已初始化全局變量來看待,存放在已初始化數據區和未初始化數據區之前。 如果不用static修飾test…

C語言學習day17-----位運算

目錄 1.位運算 1.1基礎知識 1.1.1定義 1.1.2用途 1.1.3軟件控制硬件 1.2運算符 1.2.1與 & 1.2.2或 | 1.2.3非 ~ 1.2.4異或 ^ 1.2.5左移 << 1.2.6右移 >> 1.2.7代碼實現 1.2.8置0 1.2.9置1 1.2.10不借助第三方變量&#xff0c;實現兩個數的交換…

【linux】簡單的shell腳本練習

簡單易學 解釋性語言&#xff0c;不需要編譯即可執行 對于一個合格的系統管理員來說&#xff0c;學習和掌握Shell編程是非常重要的&#xff0c;通過shell程序&#xff0c;可以在很大程度上簡化日常的維護工作&#xff0c;使得管理員從簡單的重復勞動中解脫出來 用戶輸入任意兩…

機構運動分析系統開發(Python實現)

機構運動分析系統開發(Python實現) 一、引言 機構運動分析是機械工程的核心內容,涉及位置、速度和加速度分析。本系統基于Python開發,實現了平面連桿機構的完整運動學分析,包含數學建模、數值計算和可視化功能。 二、系統架構設計 #mermaid-svg-bT8TPKQ98UU9ERet {font…

工程師生活:清除電熱水壺(鍋)水垢方法

清除電熱水壺&#xff08;鍋&#xff09;水垢方法 水垢是水加熱時自然形成的鈣質沉淀物&#xff0c;常粘附在水壺內壁及發熱盤上。它不僅影響水的品質&#xff0c;還會縮短水壺的使用壽命&#xff0c;因此需要定期清除。建議根據各地水質不同&#xff0c;每年除垢 2 至 4 次。…

[分布式并行策略] 數據并行 DP/DDP/FSDP/ZeRO

上篇文章【[論文品鑒] DeepSeek V3 最新論文 之 DeepEP】 介紹了分布式并行策略中的EP&#xff0c;簡單的提到了其他幾種并行策略&#xff0c;但礙于精力和篇幅限制決定將內容分幾期&#xff0c;本期首先介紹DP&#xff0c;但并不是因為DP簡單&#xff0c;相反DP的水也很深&…

LeeCode144二叉樹的前序遍歷

項目場景&#xff1a; 給你二叉樹的根節點 root &#xff0c;返回它節點值的 前序 遍歷。 示例 1&#xff1a; 輸入&#xff1a;root [1,null,2,3] 輸出&#xff1a;[1,2,3] 解釋&#xff1a; 示例 2&#xff1a; 輸入&#xff1a;root [1,2,3,4,5,null,8,null,null,6,7…

日本生活:日語語言學校-日語作文-溝通無國界(3)-題目:わたしの友達

日本生活&#xff1a;日語語言學校-日語作文-溝通無國界&#xff08;&#xff13;&#xff09;-題目&#xff1a;わたしの友達 1-前言2-作文原稿3-作文日語和譯本&#xff08;1&#xff09;日文原文&#xff08;2&#xff09;對應中文&#xff08;3&#xff09;對應英文 4-老師…

使用 rsync 拉取文件(從遠程服務器同步到本地)

最近在做服務器遷移&#xff0c;文件好幾個T。。。。只能單向訪問&#xff0c;服務器。怎么辦&#xff01;&#xff01;&#xff01; 之前一直是使用rsync 服務器和服務器之間的雙向同步、備份&#xff08;這是推的&#xff09;。現在服務器要遷移&#xff0c;只能單向訪問&am…

Linux 并發編程:從線程池到單例模式的深度實踐

文章目錄 一、普通線程池&#xff1a;高效線程管理的核心方案1. 線程池概念&#xff1a;為什么需要 "線程工廠"&#xff1f;2. 線程池的實現&#xff1a;從 0 到 1 構建基礎框架 二、模式封裝&#xff1a;跨語言線程庫實現1. C 模板化實現&#xff1a;類型安全的泛型…

2013年SEVC SCI2區,自適應變領域搜索算法Adaptive VNS+多目標設施布局,深度解析+性能實測

目錄 1.摘要2.自適應局部搜索原理3.自適應變領域搜索算法Adaptive VNS4.結果展示5.參考文獻6.代碼獲取7.算法輔導應用定制讀者交流 1.摘要 VNS是一種探索性的局部搜索方法&#xff0c;其基本思想是在局部搜索過程中系統性地更換鄰域。傳統局部搜索應用于進化算法每一代的解上&…

詳細介紹醫學影像顯示中窗位和窗寬

在醫學影像&#xff08;如DICOM格式的CT圖像&#xff09;中&#xff0c;**窗寬&#xff08;Window Width, WW&#xff09;和窗位&#xff08;Window Level, WL&#xff09;**是兩個核心參數&#xff0c;用于調整圖像的顯示對比度和亮度&#xff0c;從而優化不同組織的可視化效果…