git revert 和 git reset

文章目錄

    • 工作區 暫存區 本地倉庫 遠程倉庫
    • 需求:已推送到遠程倉庫,想要撤銷操作
    • git revert (添加新的提交來“反做”之前的更改,云端會殘留上次的提交記錄)
    • git reset(相當于覆蓋上次的提交)
      • 1.--soft:
      • 2.--mixed (默認選項):
      • 3. --hard:
      • 注意事項
    • 說明:
      • 參考:

工作區 暫存區 本地倉庫 遠程倉庫

在這里插入圖片描述

需求:已推送到遠程倉庫,想要撤銷操作

git revert (添加新的提交來“反做”之前的更改,云端會殘留上次的提交記錄)

如果你已經將提交推送到了遠程倉庫,并且想要撤銷這次提交,你可以使用 git revert 命令。這個命令會創建一個新的提交,這個新提交會“反做”之前的提交,從而撤銷那些更改。這樣做的好處是不會改變項目的歷史記錄,因此是協作項目中推薦的做法。

以下是使用 git revert 命令的步驟:

  1. 找到要撤銷的提交的哈希值
    使用 git log 查看提交歷史,并找到你想要撤銷的提交的哈希值。

  2. 執行 revert 操作
    使用 git revert 命令加上提交的哈希值來撤銷這次提交:

    git revert [提交哈希值]
    

    如果你只是要撤銷最近的一次提交,可以使用 HEAD 指針來引用它:

    git revert HEAD
    
  3. 解決可能出現的沖突(如果有的話):
    如果撤銷過程中出現沖突,Git 會停止并讓你手動解決這些沖突。解決完沖突后,你需要添加這些更改到暫存區并完成 revert 操作:

    git add [解決沖突的文件]
    git revert --continue
    
  4. 推送 revert 操作到遠程倉庫
    完成 revert 操作并測試沒有問題后,將這次 revert 提交推送到遠程倉庫:

    git push origin [分支名]
    

請注意,使用 git revert 并不會從項目歷史中刪除任何提交,它只是添加一個新的提交來“反做”之前的更改。如果你需要徹底從歷史記錄中刪除提交,那么需要考慮使用 git reset 并使用 --force 選項與遠程倉庫同步,但這種做法風險較高,因為它會改變項目的歷史記錄。

git reset(相當于覆蓋上次的提交)

使用 git reset 撤銷上一次的提交,你可以根據自己的需求選擇不同的操作方式。:

1.–soft:

撤銷最后一次提交,但是保留更改在暫存區。提交信息和更改都會撤銷,但是更改的內容還在暫存區,可以重新提交。

git reset --soft HEAD~1

2.–mixed (默認選項):

撤銷最后一次提交,但是保留更改在工作目錄。提交信息會被撤銷,更改的內容會保留在工作目錄中,需要重新暫存和提交。

git reset --mixed HEAD~1

這是默認的 git reset 行為。它會重置 HEAD 和暫存區到指定的提交,但不改變工作目錄。
相當于 git reset HEAD~1

3. --hard:

撤銷最后一次提交,并且丟棄所有更改。提交信息和更改都會被永久丟棄,工作目錄、暫存區和HEAD都會回退到上一個提交的狀態。

git reset --hard HEAD~1
  • 如果你使用 --hard,你將失去最后一次提交的所有更改,這是不可逆的。如果你使用 --soft 或 --mixed,你將保留更改,可以重新提交。

注意事項

  • 如果你的更改已經推送到了遠程倉庫,并且其他人可能已經基于這些更改進行了操作,使用 --hard 重置可能會導致問題。

  • 如果你使用 --soft 重置,并且想要撤銷更改,你可以使用 git clean 來清除未提交的更改:

    git clean -fd
    

    這個命令會刪除未跟蹤的文件和目錄,-f 表示強制,-d 表示刪除目錄。

說明:

git reset 用于移動 HEAD 指針,git reset之后云端仍有上次提交的記錄,所以撤銷之后的重新提交需要在git push之后加上 -f 用于強制覆蓋上次不用的提交。直接git push會出現問題

git push  --force

參考:

  • git提交錯了?別慌,直接刪除提交記錄:https://blog.csdn.net/weixin_45334346/article/details/138388941

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

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

相關文章

中國科學院植物研究所宋獻軍課題組揭示不同的翻譯后修飾協作調控水稻種子大小的新機制

公眾號:生信漫談,獲取最新科研信息! 中國科學院植物研究所宋獻軍課題組揭示不同的翻譯后修飾協作調控水稻種子大小的新機制https://mp.weixin.qq.com/s/ycNgYzACwkYZbo6k0Zqtcw 未來20年,我國將決戰全面建成社會主義現代化國家&…

MySQL筆記第三天(從小白到入門)

文章目錄 MySQL筆記SQL語言介紹數據庫系統關系型數據庫非關系型數據庫SQL和數據庫系統的關系數據庫系統架構 MySQL的介紹概念MySQL的版本 MySQL的DDL操作-重點基本數據庫操作基本表操作 MySQL的DML操作-重點insert-插入數據update-更新數據delete-刪除數據 MySQL的約束-了解概述…

工廠生產管理系統

為應對一些國內驗廠,如大疆等,他們需要客戶有自己的生產管理系統的,但實際很多公司是沒有引入ERP這類的系統的,從而想開發一套簡單的生產管理系統。 參考了網上一個比較古老的StorageMange項目,此項目用到DevExpress的…

數字簽名:確保信息完整性和身份驗證的關鍵技術

在數字時代,信息的安全性和真實性變得至關重要。數字簽名作為一種電子形式的簽名,提供了一種驗證信息來源和確保信息完整性的方法。本文將深入探討數字簽名的概念、工作原理、應用場景以及它如何幫助提高網絡安全性。 數字簽名的概念 數字簽名是一種加密…

C++與Android處理16進制大端/小端數據實例(二百七十六)

簡介: CSDN博客專家,專注Android/Linux系統,分享多mic語音方案、音視頻、編解碼等技術,與大家一起成長! 優質專欄:Audio工程師進階系列【原創干貨持續更新中……】🚀 優質專欄:多媒…

數據庫DCL語句

數據庫DCL語句 介紹: DCL英文全稱是Data Control Language(數據控制語言),用來管理數據庫用戶、控制數據庫的訪 問權限。 管理用戶: 查詢用戶: select * from mysql.user;創建用戶: create user 用戶名主機名 identified by 密碼;修改用…

Go語言垃圾回收機制原理

1. 概述 垃圾回收是一種自動內存管理技術:通過檢測程序中不再使用的內存,并釋放這些內存供其他對象使用。 應用程序中會使用到兩種內存,分別為堆(Heap)和棧(Stack)。GC不負責回收棧內存,只負責回收堆內存。 函數執行完后&#xff…

《計算機網絡微課堂》課程概述

? 課程介紹 本專欄主要是 B 站課程《計算機網絡微課堂》的文字版,作者是湖南科技大學的老師。 B 站地址:https://www.bilibili.com/video/BV1c4411d7jb 該課程好評如潮,包含理論課,實驗課,考研真題分析課&#xf…

Jenkins在windows上進行安裝

今天為了實現jmeter接口測試腳本的持續性集成安裝了jenkins,主要記錄jenkins的安裝和端口的修改。 前提條件:安裝了jdk,我本機安裝的jdk1.8。 1.下載jenkins安裝包 安裝jenkins我們需要先下載安裝包,可以通過下面的鏈接進行下載&a…

10分鐘用QEMU搭建嵌入式開發環境學習Linux

安裝依賴軟件 作者的使用的是ubuntu22.04版本。 sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build sudo apt-get install git-email sudo apt-get install libaio-dev libbluetooth-dev libcapstone-dev libbrlapi-dev libbz2-d…

JavaSE--基礎語法(第一期)

Java是一種優秀的程序設計語言,它具有令人賞心悅目的語法和易于理解的語義。不僅如此,Java還是一個有一系列計算機軟件和規范形成的技術體系,這個技術體系提供了完整的用于軟件開發和 跨平臺部署的支持環境,并廣泛應用于嵌入式系統…

基于Docker的ElasticSearch、Kibana服務搭建并開啟用戶鑒權

🏷?個人主頁:牽著貓散步的鼠鼠 🏷?系列專欄:云原生與服務部署專欄 🏷?個人學習筆記,若有缺誤,歡迎評論區指正 目錄 1. 前言 2. 服務搭建 2.1. 部署ElasticSearch 2.2. 部署Kibana 3. …

安全態勢管理的六大挑戰:態勢感知

德迅云安全鑒于如今的安全威脅不斷變幻,企業對實施態勢管理策略至關重要,可以讓安全團隊根據需要進行安全策略的動態調整。如果企業在研究構建態勢感知管理,需要特別關注以下六個方面的挑戰。 如果企業正在使用一個或多個平臺,那么…

java為什么main方法是主程序入口?已回答

答: 其實是C語言程序員規定的main,java程序才能通過main來進入程序,java程序是通過jvm虛擬機來運行的,其實main方法是可以修改的,C程序員來規定是main方法來進入主程序,還是其他方法進入主程序,…

IS-IS鏈路狀態數據庫

原理概述 一個OSPF鏈路狀態數據庫是若干條LSA的集合。與此相似,一個IS-IS鏈路狀態數據庫是由若干條LSP的集合。與OSPF鏈路狀態數據庫不同,IS-IS鏈路狀態數據庫有Level-1和Level-2之分。 在IS-IS協議中,每一條LSA都有一條剩余生存時間、一個…

[力扣題解] 417. 太平洋大西洋水流問題

題目&#xff1a;417. 太平洋大西洋水流問題 思路 代碼 (1) MyMothed // 符合條件的點 : 既可以到達左或上邊界&#xff0c;也可以到達右或下邊界&#xff1b; class Solution { private:int dir[4][2] {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};vector<vector<int>&g…

safetensors介紹

1 介紹 safetensors 是 Huggingface 推出的一種可靠、易移植的機器學習模型存儲格式&#xff0c;用于安全地存儲 Tensor&#xff0c;而且速度很快&#xff08;零拷貝&#xff09;。 safetensors 格式結構&#xff1a; 8 bytes&#xff1a;一個無符號的整數&#xff0c;表示…

Dubbo源碼及總結

Springboot整合Dubbo啟動解析Bean定義 根據springboot啟動原理&#xff0c;會先把啟動類下的所有類先進行解析bean定義&#xff0c;所以要先EnableDubbo這個注解&#xff0c;再根據這個注解里面的注解&#xff0c;可以知道import的兩個類DubboComponentScanRegistrar和DubboCo…

輸入一串字符,輸入想要字符串前*的個數n,判斷字符串前*的個數是大于n還是小于n,如果大于n則刪除多余的*其它保持不變,如果小于n,則字符串也保持不變

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void fun(char* a, int n) {int i 0, j 0, m 0,b0,c0;char* p;p a;//第一步&#xff0c;判斷字母前面有多少個*while (p[i] *){j;}printf("字母前*的個數%d\n",j);//求總的字符串長度while (a[m] !…

【全開源】沃德商協會管理系統源碼(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp開發的商協會系統&#xff0c;新一代數字化商協會運營管理系統&#xff0c;以“智慧化會員體系、智敏化內容運營、智能化活動構建”三大板塊為基點&#xff0c;實施功能全場景覆蓋&#xff0c;一站式解決商協會需求壁壘&#xff0c;有效快速建立…