Git Reset 命令詳解與實用示例

文章目錄

  • Git Reset 命令詳解與實用示例
    • `git reset` 主要選項
    • `git reset` 示例
      • 1. 撤銷最近一次提交(但保留更改)
      • 2. 撤銷最近一次提交,并清除暫存區
      • 3. 徹底撤銷提交,并丟棄所有更改
      • 4. 回退到特定的提交
      • 5. 取消暫存的文件
    • `git reset` 與 `git revert` 的區別
    • 總結

Git Reset 命令詳解與實用示例

git reset 是一個強大的 Git 命令,主要用于撤銷提交(commit)、修改暫存區(staging area)或工作區(working directory)。它可以讓你回到某個特定的提交,或者只撤銷最近的更改,而不影響歷史記錄。

git reset 主要選項

  1. --soft:只回退提交(commit),保留暫存區和工作區的更改。
  2. --mixed(默認):回退提交,并且清空暫存區(staging area),但保留工作區的更改。
  3. --hard:回退提交,同時清空暫存區和工作區的所有更改。

git reset 示例

1. 撤銷最近一次提交(但保留更改)

git reset --soft HEAD~1
  • HEAD~1 表示回退到上一個提交。
  • 僅撤銷 commit,但文件的修改仍保留在暫存區(staging area)。
  • 適用于:想修改最后一次提交但不想丟失已暫存的內容。

2. 撤銷最近一次提交,并清除暫存區

git reset --mixed HEAD~1
  • 僅撤銷 commit,同時將暫存區的更改退回到工作區(但不刪除更改)。
  • 適用于:提交了代碼但不想保留這個提交,而是繼續修改。

3. 徹底撤銷提交,并丟棄所有更改

git reset --hard HEAD~1
  • 該命令會將代碼回退到上一個提交,并刪除所有未提交的更改(無法恢復)。
  • 適用于:不想保留本地的修改,需要完全回到上一個提交的狀態。

4. 回退到特定的提交

git reset --hard <commit-hash>
  • <commit-hash> 是目標提交的哈希值(git log 可以查看)。
  • 適用于:回到某個特定版本,并清除之后的所有更改。

5. 取消暫存的文件

git reset HEAD <file>
  • 取消對 <file> 的暫存,但保留其更改。
  • 適用于:錯誤地使用 git add 暫存了文件,需要取消暫存但不丟失更改。

git resetgit revert 的區別

  • git reset 會直接修改歷史記錄,適合本地修改,不適用于已推送的提交。
  • git revert 通過創建新的提交來撤銷某個提交,適用于共享倉庫。

示例:

git revert <commit-hash>
  • 這不會改變提交歷史,而是生成一個新的撤銷提交,適合多人協作。

總結

命令作用影響
git reset --soft HEAD~1撤銷最近一次提交保留暫存區和工作區的更改
git reset --mixed HEAD~1撤銷最近一次提交,清除暫存區保留工作區的更改
git reset --hard HEAD~1撤銷最近一次提交,并清除所有更改丟失所有未提交的更改
git reset HEAD <file>取消暫存區的文件保留工作區的更改
git revert <commit-hash>撤銷某次提交,并生成新的提交不修改提交歷史,適合共享倉庫

如果你對歷史回退有顧慮,建議使用 git revert,而 git reset --hard 要謹慎使用,以免丟失重要代碼。

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

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

相關文章

前端知識點---事件監聽器里面的e.target跟this的區別,e.target在事件委托中的好處

文章目錄 ? 相同點? 不同點? 總結區別e.target與事件委托之間的關系 在事件監聽器中&#xff0c;e.target 和 this 有時是一樣的&#xff0c;但它們并不完全相同。 ? 相同點 當事件直接綁定到元素時&#xff1a; e.target 和 this 通常指向相同的元素&#xff0c;即事件綁…

Elasticsearch 完全指南

1. Elasticsearch基礎知識 1.1 什么是Elasticsearch Elasticsearch是一個基于Lucene的分布式、RESTful風格的搜索和數據分析引擎。它是一個開源的、高擴展的、分布式的全文搜索引擎,可以近乎實時地存儲、檢索數據。 Elasticsearch不僅僅是一個全文搜索引擎,它還可以用于以…

Python 3 與 MySQL 數據庫連接:mysql-connector 模塊詳解

Python 3 與 MySQL 數據庫連接&#xff1a;mysql-connector 模塊詳解 概述 在Python 3中&#xff0c;與MySQL數據庫進行交互是一個常見的需求。mysql-connector是一個流行的Python模塊&#xff0c;它提供了與MySQL數據庫連接和交互的接口。本文將詳細介紹mysql-connector模塊…

SQL:CASE WHEN使用詳解

文章目錄 1. 數據轉換與映射2. 動態條件篩選3. 多條件分組統計4. 數據排名與分級5. 處理空值與默認值6. 動態排序 CASE WHEN 語句在 SQL 中是一個非常強大且靈活的工具&#xff0c;除了常規的條件判斷外&#xff0c;還有很多巧妙的用法&#xff0c;以下為你詳細總結&#xff1a…

【字符設備驅動開發–IMX6ULL】(二)Linux 設備號

【字符設備驅動開發–IMX6ULL】&#xff08;二&#xff09;Linux 設備號 文章目錄 【字符設備驅動開發–IMX6ULL】&#xff08;二&#xff09;Linux 設備號1 設備號的組成2.設備號的分配 1 設備號的組成 為了方便管理&#xff0c;Linux 中每個設備都有一個設備號&#xff0c;設…

【字符設備驅動開發–IMX6ULL】(一)簡介

【字符設備驅動開發–IMX6ULL】&#xff08;一&#xff09;簡介 一、Linux驅動與裸機開發區別 1.裸機驅動開發回顧 ? 1、底層&#xff0c;跟寄存器打交道&#xff0c;有些MCU提供了庫。 spi.c&#xff1a;主機驅動&#xff08;換成任何一個設備之后只需要調用此文件里面的…

YOLOv8+ Deepsort+Pyqt5車速檢測系統

該系統通過YOLOv8進行高效的目標檢測與分割&#xff0c;結合DeepSORT算法完成目標的實時跟蹤&#xff0c;并利用GPU加速技術提升處理速度。系統支持模塊化設計&#xff0c;可導入其他權重文件以適應不同場景需求&#xff0c;同時提供自定義配置選項&#xff0c;如顯示標簽和保存…

藍橋杯嵌入式學習筆記

用博客來記錄一下參加藍橋杯嵌入式第十六屆省賽的學習經歷 工具環境準備cubemx配置外部高速時鐘使能設置串口時鐘配置項目配置 keil配置燒錄方式注意代碼規范頭文件配置 模塊ledcubemx配置keil代碼實現點亮一只燈實現具體操作的燈&#xff0c;以及點亮還是熄滅 按鍵cubemx配置k…

ARCGIS PRO SDK VB2022 圖層要素類類型判斷

arcgis pro 常見要素類類型有以下幾種&#xff1a; FeatureLayer ——要素圖層&#xff08;矢量數據&#xff09; RasterLayer ——柵格圖層 MapImageLayer ——地圖圖像圖層 VectorTileLayer ——矢量切片圖層 SceneLayer …

【hadoop】遠程調試環境

根據上一節&#xff0c;我們已經安裝完成hadoop偽分布式環境 hadoop集群環境配置_jdk1.8 441-CSDN博客 還沒安裝的小伙伴可以看看這個帖子 這一節我們要實現使用vscode進行遠程連接&#xff0c;并且完成java配置與測試 目錄 vscode 配置遠程 安裝java插件 新建java項目 …

Java版Manus實現來了,Spring AI Alibaba發布開源OpenManus實現

此次官方發布的 Spring AI Alibaba OpenManus 實現&#xff0c;包含完整的多智能體任務規劃、思考與執行流程&#xff0c;可以讓開發者體驗 Java 版本的多智能體效果。它能夠根據用戶的問題進行分析&#xff0c;操作瀏覽器&#xff0c;執行代碼等來完成復雜任務等。 項目源碼及…

【Linux網絡與網絡編程】02.初識Socket編程

1. 數據傳輸的目的 前一篇文章中我們講解了網絡傳輸的流程&#xff0c;那么網絡傳輸的目的是什么呢&#xff1f;難道我們只是將數據從一臺主機傳輸到另一臺主機嗎&#xff1f; 當然不是的&#xff01;因為數據是給人用的。比如&#xff1a;聊天是人在聊天&#xff0c;下載是人…

電腦連不上手機熱點會出現的小bug

一、問題展示 注意: 不要打開 隱藏熱點 否則他就會在電腦上 找不到自己的熱點 二、解決辦法 把隱藏熱點打開即可

CUDA專題3:為什么GPU能改變計算?深度剖析架構、CUDA?與可擴展編程

1. 簡介 1.1. 使用 GPU 的優勢 圖形處理器(GPU)在相近的成本和功耗范圍內,能夠提供比中央處理器(CPU)更高的指令吞吐量和內存帶寬。許多應用程序利用這些優勢,在 GPU 上的運行速度遠超 CPU(參見《GPU 應用》)。其他計算設備(如 FPGA)雖然能效也很高,但其編程靈活性…

Linux輸入系統應用編程

什么是輸入系統 Linux 輸入系統是處理用戶輸入設備(如鍵盤、鼠標、觸摸屏、游戲手柄等)的軟件架構。在應用編程層面&#xff0c;它提供了與這些輸入設備交互的接口。 主要組成部分 輸入設備驅動層&#xff1a;直接與硬件交互的驅動程序 輸入核心層&#xff1a;內核中的輸入子…

StarRocks BE宕機排查

StarRocks BE宕機排查 排查是否OOM dmesg -T|grep -i oom #排查是否oom原因&#xff1a; 2.X版本OOM原因 BE 的配置文件 (be.conf) 中 mem_limit 配置不合理&#xff0c;需要配置mem_limit(機器總內存-其他服務占用內存-1~2g(系統預留)) 比如機器內存40G&#xff0c;上面有…

邏輯回歸(Logistic Regression)模型的概率預測函數

以二分類問題為例&#xff0c;常見的損失函數有 負對數似然損失(neg log-likelihood loss)&#xff0c;交叉熵損失(cross entropy loss)&#xff0c;deviance loss指數損失(exponential loss)。 前三者雖然名字不同&#xff0c;但卻具有相同的表達形式。此外&#xff0c;neg …

函數式組件中的渲染函數 JSX

在 Vue.js 和 React 等現代前端框架中&#xff0c;函數式組件已成為一種非常流行的設計模式。函數式組件是一種沒有內部狀態和生命周期方法的組件&#xff0c;其主要功能是接受 props 并渲染 UI。隨著這些框架的演進&#xff0c;渲染函數和 JSX&#xff08;JavaScript XML&…

Android 動態設置默認Launcher(默認應用 電話-短信-瀏覽器-主屏幕應用))

Android 動態設置默認Launcher(默認應用 電話-短信-瀏覽器-主屏幕應用&#xff09;) 文章目錄 場景需求參考資料思路期待效果 實現方案源碼流程分析和思路實現DefaultAppActivityHandheldDefaultAppFragmentHandheldDefaultAppPreferenceFragmentDefaultAppChildFragmentDefaul…

Qt下載模板到本地文件內容丟失問題

上源碼 關鍵點已標注在源碼中 A, B… // 保存的文件路徑后綴QString dateTime Myapp::getCurrentTimeDescYMDHms().replace(" ", "").replace("-", "").replace(":", "");// 臨時文件名稱QString newFileName Q…