git中reset和checkout的用法

git reset:重置分支的歷史與工作區?

核心作用??:移動當前分支的指針(即改變分支的歷史),并可選地修改暫存區(Index)和工作目錄(Working Directory)。常用于撤銷提交或合并操作。

三種模式??
  1. ???--soft?模式?
    行為?
    ?:僅移動分支指針(HEAD),不修改暫存區和工作目錄。
    ??使用場景??:撤銷提交但保留修改,允許重新提交。

    git reset --soft HEAD~1  # 撤銷最后一次提交,修改保留在暫存區
  2. ???--mixed?模式(默認)
    行為??:移動分支指針,并重置暫存區,但保留工作目錄的修改。
    使用場景??:撤銷提交和暫存操作,需重新?add?后再提交
    git reset HEAD~1  # 等效于 git reset --mixed HEAD~1
  3. ???--hard?模式
    行為??:移動分支指針,并強制重置暫存區和工作目錄到指定提交的狀態。
    使用場景??:徹底丟棄最近的提交和所有修改(慎用!)。
    git reset --hard HEAD~1  # 丟棄最后一次提交及所有修改
    關鍵特點??
    影響分支歷史??:reset?會改變分支的指針,從而修改提交歷史。
    ??適用場景??:撤銷本地提交、合并沖突后重置等操作。

git checkout:切換分支或檢出內容?

核心作用??:切換分支,或檢出指定提交/文件到工作目錄。??不修改分支歷史??,主要用于切換上下文或恢復文件。

切換分支?
git checkout <branch-name>  # 切換到另一個分支
    • 行為??:
      • 移動 HEAD 到目標分支,更新工作目錄和暫存區為該分支的最新狀態。
      • 如果工作目錄有未提交的修改,Git 會阻止切換(除非使用?-f?強制切換或修改被忽略)。

    分離頭指針(Detached HEAD)???

    git checkout <commit-hash>  # 檢出一個提交,進入分離頭狀態
    • 行為??:
      • HEAD 直接指向提交而非分支,此時的新提交不會屬于任何分支(需手動創建分支保存)。
      • 適用于臨時調試或實驗性修改。
    檢出文件
    git checkout HEAD -- file.txt  # 從 HEAD 恢復文件到工作目錄和暫存區
    git checkout <branch> -- file.txt  # 從其他分支恢復文件
    • 行為??:
      • 將指定文件恢復到目標版本(覆蓋工作目錄和暫存區),不影響 HEAD 位置。
      • 常用于撤銷對單個文件的修改。
    關鍵特點??
    • ??不修改分支歷史??:checkout?僅切換上下文或恢復文件,不會改變分支的提交記錄。
    • ??適用場景??:切換分支、臨時查看舊版本代碼、撤銷文件修改。

    reset?與?checkout?的核心區別??

    功能??git resetgit checkout
    ??操作對象??當前分支(修改分支指針)分支、提交或文件(不修改分支歷史)
    ??影響范圍??分支歷史、暫存區、工作目錄工作目錄、暫存區(僅文件操作時)
    ??是否改變提交歷史??否(除非在分離頭模式下提交)
    ??典型場景??撤銷本地提交切換分支、恢復文件

    總結??

    • ??用?reset?當你想撤銷提交或修改分支歷史??(如回退到舊版本)。
    • ??用?checkout?當你想切換分支、查看舊版本代碼,或恢復單個文件??。

    ??慎用?git reset --hard??:它會永久丟棄未提交的修改!


    場景:需要將工作目錄的修改與上一個提交??完全合并為一個新提交??,并可能修改提交信息,怎么做呢?

    以下是分步解決方案,可根據你的需求選擇兩種方法:

    git reset --soft?和?git commit --amend???都是對本地提交歷史的修改??。如果這些提交已經推送到遠程倉庫(如 GitHub、GitLab),直接修改本地歷史后,再推送會遇到問題。如果提交已推送到遠程倉庫需要告知團隊成員


    ??方法一:使用?git reset --soft

    適用場景??:需要將工作目錄的修改與上一個提交??完全合并為一個新提交??,并可能修改提交信息。

    步驟??:

    • ??撤銷最近一次提交,但保留修改在暫存區??
    git reset --soft HEAD~1

      此時,之前的提交內容和工作目錄的新修改都會保留在暫存區(git status?會顯示所有修改已暫存)。

      • 查看狀態確認修改已合并?
      git status  # 確認所有修改已加入暫存區
      • ??提交合并后的內容?
      git commit -m "合并工作區修改與上一個提交"

      方法二:使用?git commit --amend?

      適用場景??:僅需將工作目錄的修改??追加到上一個提交??,且不修改提交信息(或微調)。

      步驟??:

      • ??將工作目錄的修改加入暫存區??:
      git add .  # 或指定文件 git add file1.txt
      • ??將修改合并到上一個提交??:
      git commit --amend --no-edit  # 保留原提交信息

      ??如果想修改提交信息,去掉?--no-edit

      git commit --amend -m "新的提交信息"
        ??方法??git reset --softgit commit --amend
        ??是否修改提交歷史??是(生成新提交)是(覆蓋原提交)
        ??是否保留原提交信息??需手動輸入新提交信息可保留或修改原提交信息
        ??適用場景??完全重寫提交內容與信息快速追加修改到原提交

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

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

        相關文章

        權限提升—Linux提權內核溢出漏洞輔助項目

        前言 今天開啟Linux提權的篇章&#xff0c;主要是講一下Linux的內核漏洞提權&#xff0c;利用方式和Windows系統漏洞提權差不多&#xff0c;也是網上的項目掃一下&#xff0c;然后根據漏洞編號去找exp即可。 信息收集 首先要說一下Linux用戶的權限劃分。 系統用戶&#xff…

        React Native Redux 使用指南 redux-toolkit

        React Native Redux 使用指南 redux-toolkit 一個可預測和可維護的全局狀態管理 JavaScript 庫 Redux 和 React-Redux以及**reduxjs/toolkit 的關系&#xff1a;** Redux、React-Redux、reduxjs/toolkit 是 React 生態中狀態管理的「黃金三角組合」&#xff0c;它們的關系可…

        JVM——Java 虛擬機是如何加載 Java 類的?

        引入 在 Java 世界的底層運作中&#xff0c;類加載機制扮演著一個既神秘又關鍵的角色。它就像是一個精心設計的舞臺幕后 machinery&#xff0c;確保了 Java 程序能夠順利運行。今天&#xff0c;我們就深入探索 Java 虛擬機&#xff08;JVM&#xff09;是如何加載 Java 類的。 …

        清華團隊提出時序聚類數據庫內高效方案,已被SIGMOD 2025接收

        時間序列聚類是挖掘物聯網等場景下頻繁模式的關鍵技術&#xff0c;但現有SOTA方法&#xff08;如K-Shape&#xff09;面臨兩大瓶頸&#xff1a;1&#xff09;傳統數據庫因LSM-Tree存儲導致時間戳無序&#xff0c;難以直接支持高效聚類&#xff1b;2&#xff09;跨時間范圍查詢需…

        【阿里云大模型高級工程師ACP學習筆記】2.8 部署模型

        一、學習目標 特別說明:這一章節是2025年3月官方重點更新的部分,幾乎對內容重新翻新改造了一遍,重點突出了對于如何結合不同的阿里云產品來部署大模型進行了更加詳細的介紹和對比,這里整理給大家,方便大家參考。 在備考阿里云大模型高級工程師ACP認證的過程中,學習《2.8 …

        第T10周:數據增強

        &#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 從 tensorflow.keras 中導入 layers 模塊&#xff0c;包含了常用的神經網絡層&#xff0c;用來搭建模型結構。 檢查并列出系統中可用的物理 GPU 設備&#xff…

        uniapp 支付寶小程序自定義 navbar 無效解決方案

        如圖&#xff1a; uniapp編譯到支付寶小程序隱藏默認的導航欄失效了 解決方案&#xff1a; 在 pages.json 文件中找到 globalStyle 中加入以下代碼&#xff1a; "mp-alipay": {"transparentTitle": "always","titlePenetrate":…

        vue2 el-element中el-select選中值,數據已經改變但選擇框中不顯示值,需要其他輸入框輸入值才顯示這個選擇框才會顯示剛才選中的值

        項目場景&#xff1a; <el-table-column label"稅率" prop"TaxRate" width"180" align"center" show-overflow-tooltip><template slot-scope"{row, $index}"><el-form-item :prop"InquiryItemList. …

        centos7 離線安裝python3 保留python2

        一、事前準備&#xff1a; &#xff08;1&#xff09;查看centos具體版本 cat /etc/redhat-releaseCentOS Linux release 7.4.1708 (Core) &#xff08;2&#xff09;查看linux中當前python版本 centos7 默認安裝python2.7.5 &#xff08;3&#xff09;查看python3的依賴&#…

        十三種通信接口芯片——《器件手冊--通信接口芯片》

        目錄 通信接口芯片 簡述 基本功能 常見類型 應用場景 詳盡闡述 1 RS485/RS422芯片 1. RS485和RS422標準 2. 芯片功能 3. 典型芯片及特點 4. 應用場景 5. 設計注意事項 6. 選型建議 2 RS232芯片 1. RS232標準 2. 芯片功能 3. 典型芯片及特點 4. 應用場景 5. 設計注意事項 6…

        2025年RAG技術發展現狀分析

        2025年&#xff0c;大模型RAG&#xff08;檢索增強生成&#xff09;技術經歷了快速迭代與深度應用&#xff0c;逐漸從技術探索走向行業落地&#xff0c;同時也面臨安全性和實用性的新挑戰。以下是其發展現狀的綜合分析&#xff1a; 一、技術架構的持續演進 從單一到模塊化架構 …

        case和字符串操作

        使用if選擇結構 if [];then elif [];then #注意這個地方,java是else if else ; fi 使用for循環結構 使用for循環&#xff0c;語法結構如下所示&#xff1a; for 變量名 in 值1 值2 值3 #值的數量決定循環任務的次數 do命令序列 done#循環輸出1到10 for i in {1..10} #注…

        Stm32 燒錄 Micropython

        目錄 前言 準備工作 開始操作 問題回顧 后記 前言 去年曾經嘗試Pico制作openmv固件&#xff0c;由于知識儲備不夠最后失敗了&#xff0c;留了一個大坑&#xff0c;有了前幾天的基礎&#xff0c;慢慢補齊知識&#xff0c;最近這一周一直在學習如何編譯Stm固件并燒錄到單片機…

        鹽化行業數字化轉型規劃詳細方案(124頁PPT)(文末有下載方式)

        資料解讀&#xff1a;《鹽化行業數字化轉型規劃詳細解決方案》 詳細資料請看本解讀文章的最后內容。 該文檔聚焦鹽化行業數字化轉型&#xff0c;全面闡述了鹽化企業信息化建設的規劃方案&#xff0c;涵蓋戰略、架構、實施計劃、風險及效益等多個方面&#xff0c;旨在通過數字化…

        2025年人工智能火爆技術總結

        2025年人工智能火爆技術總結&#xff1a; 生成式人工智能 生成式人工智能可生成高質量的圖像、視頻、音頻和文本等多種內容。如昆侖萬維的SkyReels-V2能生成無限時長電影&#xff0c;其基于擴散強迫框架&#xff0c;結合多模態大語言模型和強化學習等技術&#xff0c;在運動動…

        邊緣計算革命:大模型輕量化部署全棧實戰指南

        當ResNet-152模型能在樹莓派4B上實現每秒27幀實時推理時&#xff0c;邊緣智能時代真正到來。本文解析從模型壓縮到硬件加速的完整技術棧&#xff0c;實測Transformer類模型在移動端的部署時延可壓縮至16ms&#xff0c;揭示ARM芯片實現INT4量化的工程秘訣與十種典型場景優化方案…

        邊緣計算:數字世界的”末梢神經系統”解析-優雅草卓伊凡

        邊緣計算&#xff1a;數字世界的”末梢神經系統”解析-優雅草卓伊凡 一、邊緣計算深度解析 1.1 邊緣計算的定義與架構 邊緣計算&#xff08;Edge Computing&#xff09;是一種分布式計算范式&#xff0c;它將數據處理能力從傳統的集中式云數據中心推向網絡邊緣&#xff0c;更…

        面試手撕——迭代法中序遍歷二叉樹

        思路 訪問順序和處理順序不一致導致迭代法難寫&#xff0c;體現在總要先遍歷根節點&#xff0c;才能訪問左右孩子&#xff0c;用null標記&#xff0c;null標記的節點表示已經訪問過了&#xff0c;下一次可以處理&#xff0c;所以在當前棧頂節點不是null的時候&#xff0c;都要…

        AD系列:Windows Server 2025 安裝AD CS角色和頒發證書

        什么是 Active Directory 證書服務&#xff1f; Active Directory 證書服務 (AD CS) 是一個 Windows Server 角色&#xff0c;負責頒發和管理在安全通信和身份驗證協議中使用的公鑰基礎結構 (PKI) 證書。 頒發和管理證書 數字證書可用于對電子文檔和消息進行加密和數字簽名&…

        kubernetes》》k8s》》Service 、Ingress 區別

        K8S>>Service 資料 K8S >>Ingress 資料 Ingress VS Service 物理層數據鏈路層網絡層傳輸層會話層表示層應用層 Ingress是一種用于暴露HTTP和HTTPS路由的資源&#xff0c;它提供了七層&#xff08;應用層&#xff09;的負載均衡功能。Ingress可以根據主機名、…