git reset詳解

一、git reset?的核心作用

用于?移動當前分支的?HEAD?指針?到指定的提交,并可選擇是否修改工作區和暫存區。
?? 注意:若提交已被推送到遠程倉庫,強制重置(--hard)后需謹慎操作,避免影響協作。


二、三種模式對比

模式命令示例影響范圍適用場景
--softgit reset --soft HEAD~1僅移動?HEAD,保留修改在?暫存區修改提交信息或合并提交
--mixedgit reset HEAD~1移動?HEAD,保留修改在?工作區撤銷提交但保留代碼修改(默認模式)
--hardgit reset --hard HEAD~1移動?HEAD丟棄所有修改徹底回退到歷史版本(慎用!)

三、詳細使用場景

1. 回退到指定提交

?

# 查看提交歷史,獲取目標 commit-hash
git log --oneline# 回退到指定提交(默認 --mixed)
git reset abc1234
2. 撤銷最近一次提交但保留代碼
git reset HEAD~1          # 或 git reset --mixed HEAD~1

?

  • 修改會保留在工作目錄,可重新編輯后提交。

3. 修改最后一次提交(不產生新提交)
git add <漏掉的文件>        # 添加遺漏的修改
git reset --soft HEAD~1   # 撤銷提交但保留修改到暫存區
git commit -m "新描述"     # 重新提交
4. 徹底丟棄本地所有修改
git reset --hard HEAD     # 丟棄所有未提交的修改(包括工作區和暫存區)

四、關鍵參數詳解

1. 指定回退步數
  • HEAD~1:回退 1 個提交

  • HEAD~3:回退 3 個提交

2. 回退到遠程倉庫狀態
git reset --hard origin/main  # 強制與遠程 main 分支一致
3. 回退單個文件
git reset HEAD~1 -- path/to/file  # 僅回退該文件到指定版本
git checkout HEAD~1 -- path/to/file  # 替代方案(保留提交歷史)

五、與?git revert?的區別

命令特點適用場景
git reset刪除提交歷史,改變?HEAD本地未推送的提交回退
git revert生成新提交來撤銷舊提交已推送提交的撤銷

示例

  • 撤銷已推送的提交:

    git revert abc123  # 生成一個反向提交
    git push          # 安全推送

?

六、風險與注意事項

  1. --hard?會永久丟棄修改

    • 確保無需保留代碼再使用,或提前?git stash?備份。

  2. 強制推送需團隊協商

    git reset --hard HEAD~3
    git push -f origin main  # 強制覆蓋遠程(謹慎!)

    ?

3.恢復誤操作

  • 通過?git reflog?找回丟失的提交哈希

?

七、可視化示例

初始狀態
A <- B <- C (HEAD -> main)
執行?git reset --soft B
A <- B (HEAD -> main)
# C 的修改保留在暫存區

執行?git reset --mixed B

A <- B (HEAD -> main)
# C 的修改保留在工作區

執行?git reset --hard B

A <- B (HEAD -> main)
# C 的修改被徹底丟棄

八、總結命令速查

需求命令
撤銷提交但保留代碼git reset HEAD~1
修改最后一次提交git reset --soft HEAD~1
徹底回退到歷史版本git reset --hard abc123
撤銷對單個文件的提交git reset HEAD~1 -- file.txt

?

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

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

相關文章

【unity游戲開發入門到精通——UGUI】CanvasScaler畫布縮放器組件

注意&#xff1a;考慮到UGUI的內容比較多&#xff0c;我將UGUI的內容分開&#xff0c;并全部整合放在【unity游戲開發——UGUI】專欄里&#xff0c;感興趣的小伙伴可以前往逐一查看學習。 文章目錄 一、CanvasScaler畫布縮放器組件是什么二、CanvasScaler的三種適配模式1、Cons…

Kubernetes控制平面組件:API Server Webhook 授權機制 詳解

云原生學習路線導航頁&#xff08;持續更新中&#xff09; kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計&#xff08;一&#xff09;Kubernetes架構原則和對象設計&#xff08;二&#xff09;Kubernetes架構原則和對象設計&#xff08;三&#xff09;Kubernetes控…

Python自動化辦公

第五篇&#xff1a;Python自動化辦公&#xff1a;10行代碼搞定重復性工作 適合讀者&#xff1a;職場人士、數據分析師 | 閱讀時長&#xff1a;12分鐘 引言 每天重復處理Excel、PDF或郵件&#xff1f;Python可以幫你自動化這些枯燥任務&#xff0c;節省90%的時間。本文通過實際…

【3】k8s集群管理系列--包應用管理器helm之chart資源打包并推送到harbor鏡像倉庫

一、chart資源打包 helm package ./web-chart # 當前目錄會生成一個tgz的壓縮文件二、安裝help push插件&#xff08;用于推送前面打包的文件&#xff0c;到鏡像倉庫&#xff09; .1 下載help-push二進制文件 wget https://github.com/chartmuseum/helm-push/releases/down…

【SpringBoot Druid Mysql多數據源整合】

SpringBoot Druid Mysql多數據源整合 一、背景二、配置結果2.1 SpringBoot java 類配置2.1.1 啟動類配置2.1.2 java Config配置 2.2 SpringBoot yml 配置 三、mybatis插件配置3.1 PageHelper的yml配置3.2 mybatis設置自定義字段默認值 四、配置解釋 一、背景 公司項目需要連接另…

GGML源碼逐行調試(中)

目錄 前言1. 簡述2. 加載模型超參數3. 加載詞匯表4. 初始化計算上下文5. 初始化計算后端6. 創建模型張量7. 分配緩沖區8. 加載模型權重結語下載鏈接參考 前言 學習 UP 主 比飛鳥貴重的多_HKL 的 GGML源碼逐行調試 視頻&#xff0c;記錄下個人學習筆記&#xff0c;僅供自己參考&…

kubectl的使用

查看集群有多少節點 kubectl get nodes 獲取集群狀態的摘要信息&#xff08;組件信息&#xff09; kubectl get cs 查看所有命名空間下的所有pod的狀態和信息 kubectl get pods --all-namespaces 查看所有命名空間的狀態和信息 kubectl get namespaces /ns 查看kube-system…

git在分支上會退到某個指定的commit

1、在idea上先備份好分支&#xff08;基于現有分支new branch&#xff09; 2、在gitlab管理端刪除現有分支 3、在idea中大卡terminal&#xff0c;執行 git log 查看commit log ,找到要會退到的commit唯一碼&#xff0c;然后執行git reset 唯一碼 4、查看本地代碼狀態 git st…

動態路由, RIP路由協議,RIPv1,RIPv2

動態路由 1、回顧 路由&#xff1a;從源主機到目標主機的過程 源主機發送數據給目標主機&#xff0c;源主機會查看自身的路由信息 如果目標主機是自己同網段&#xff0c;源主機查看的是直連路由 如果目標主機和自己不同網段&#xff0c;源主機查看的是靜態路由、動態路由、默…

前端面試-工程化(webpack、vite)

Webpack 相關問題&#xff08;25道&#xff09; Webpack 的核心概念有哪些&#xff1f;&#xff08;Entry、Output、Loader、Plugin、Module、Bundle&#xff09;如何配置 Webpack 的多入口和多出口&#xff1f;Webpack 的 Tree Shaking 實現原理是什么&#xff1f;Loader 和 …

idea 2024 build菜單不見了

Q如題 idea 2024 新版UI添加build和recompile菜單 A如圖&#xff0c;右鍵頂部欄之后&#xff0c;點擊Add to Main Toolbar菜單&#xff0c;在里面就能找到Build菜單&#xff0c;添加接口。 Recompile菜單的話在Customize Toolbar中搜索添加才行。

【開源項目】Excel手撕AI算法深入理解(三):時序(RNN、mamba)

項目源碼地址&#xff1a;https://github.com/ImagineAILab/ai-by-hand-excel.git 一、RNN 1. RNN 的核心思想 RNN 的設計初衷是處理序列數據&#xff08;如時間序列、文本、語音&#xff09;&#xff0c;其核心特點是&#xff1a; 隱藏狀態&#xff08;Hidden State&#xff…

pycharm已有python3.7,如何新增Run Configurations中的Python interpreter為python 3.9

在 PyCharm 中&#xff0c;如果你已經安裝了 Python 3.9&#xff0c;并且希望在 Run Configurations 中新增一個 Python 3.9 的解釋器&#xff0c;可以按照以下步驟操作&#xff1a; 步驟 1&#xff1a;打開 PyCharm 設置 點擊 PyCharm 左上角的 File 菜單。選擇 Settings&am…

【H橋電機驅動電路原理】-學習筆記

工作原理 電路分析 這是一個由晶體管構成的 H 橋電機驅動電路 &#xff0c;以下是對其各部分的介紹&#xff1a; 核心器件 晶體管&#xff1a;電路中使用了 PNP 型的 SS8550&#xff08;Q5、Q6 &#xff09;和 NPN 型的 SS8050&#xff08;Q9、Q10、Q13、Q14 &#xff09;。…

【家政平臺開發(49)】解鎖家政平臺上線密碼:服務器選型與配置全攻略

本【家政平臺開發】專欄聚焦家政平臺從 0 到 1 的全流程打造。從前期需求分析,剖析家政行業現狀、挖掘用戶需求與梳理功能要點,到系統設計階段的架構選型、數據庫構建,再到開發階段各模塊逐一實現。涵蓋移動與 PC 端設計、接口開發及性能優化,測試階段多維度保障平臺質量,…

驅動開發硬核特訓 · Day 10 (理論上篇):設備模型 ≈ 運行時的適配器機制

&#x1f50d; B站相應的視屏教程&#xff1a; &#x1f4cc; 內核&#xff1a;博文視頻 - 總線驅動模型實戰全解析 敬請關注&#xff0c;記得標為原始粉絲。 在 Linux 驅動開發中&#xff0c;設備模型&#xff08;Device Model&#xff09;是理解驅動架構的核心。而從軟件工程…

arm_math.h、arm_const_structs.h 和 arm_common_tables.h

在 ??FOC&#xff08;Field-Oriented Control&#xff0c;磁場定向控制&#xff09;?? 中&#xff0c;arm_math.h、arm_const_structs.h 和 arm_common_tables.h 是 CMSIS-DSP 庫的核心組件&#xff0c;用于實現高效的數學運算、預定義結構和查表操作。以下是它們在 FOC 控…

Android: gradient 使用

在 Android 中使用 gradient&#xff08;漸變&#xff09; 通常是通過 drawable 文件來設置背景。下面是可以直接用的幾種用法匯總&#xff0c;包括線性漸變、徑向漸變、掃描漸變&#xff08;sweep&#xff09;等&#xff1a; ? 1. Linear Gradient&#xff08;線性漸變&#…

打造AI應用基礎設施:Milvus向量數據庫部署與運維

目錄 打造AI應用基礎設施&#xff1a;Milvus向量數據庫部署與運維1. Milvus介紹1.1 什么是向量數據庫&#xff1f;1.2 Milvus主要特點 2. Milvus部署方案對比2.1 Milvus Lite2.2 Milvus Standalone2.3 Milvus Distributed2.4 部署方案對比表 3. Milvus部署操作命令實戰3.1 Milv…

AI Agent 在醫療健康領域的深度應用剖析

引言 隨著人工智能技術的迅猛發展&#xff0c;AI Agent 在醫療健康領域展現出了巨大的應用潛力。它猶如一位智能助手&#xff0c;憑借其強大的數據處理和分析能力&#xff0c;滲透到醫療健康的各個環節&#xff0c;從疾病診斷、治療方案制定到患者康復監控&#xff0c;都發揮著…