Git刪除指定歷史版本

問題:

在Git提交版本,有時有些小版本相比較于后續的大版本,都會包含,且后續存在的意義不太大,一般認為是可以刪除的。或者,中間一些版本有問題但是也提交了,拉取這些版本根本沒用,這些版本也可以或者應該刪除。那么,怎么刪除指定版本呢?刪除后Git版本流會是什么樣的結構呢?

下面是查到的一些方法:

1、使用git revert

以下來自百度文心快碼。部分文字可能有些不通。

git revert命令詳解?

git revert是一個Git命令,用于撤銷一些現有的提交,并記錄一些新的提交以反映這些更改的撤銷。它不是從項目歷史記錄中刪除提交,而是通過創建相反內容的新提交來撤銷指定的更改,這有助于維護修訂歷史記錄的完整性。

?一、基本語法?

bash

git revert <commit>...

這里的<commit>是你想要撤銷的提交的哈希值或引用,你可以指定一個或多個提交。

?二、常見用法?

  1. ?撤銷最新提交?

bash

git revert HEAD

這會撤銷你最近的提交,并創建一個新的提交來反映這一撤銷。

  1. ?撤銷前一次提交?

bash

git revert HEAD^

HEAD^表示上一次提交,所以這條命令會撤銷上一次提交。

  1. ?撤銷多個連續的提交?

如果你想要撤銷多個連續的提交,可以使用以下命令:

bash

git revert commit_id_start..commit_id_end

這里commit_id_start是你想要開始撤銷的提交的哈希值,commit_id_end是你想要結束撤銷的提交的哈希值(不包括這個提交本身)。注意,這個范圍是左閉右開的。

如果你想要撤銷多個不連續的提交,你需要為每個提交分別執行git revert命令。

?三、選項?

  1. --edit?或?-e:允許你在提交撤銷更改之前編輯提交消息。默認情況下,這個選項是啟用的,除非你使用了--no-edit選項。
  2. --mainline parent-number?或?-m parent-number:當你處理一個具有多個父提交的提交(例如,由git merge創建的合并提交)時,這個選項允許你指定哪個父提交應該被視為主線。

?四、注意事項?

  1. 在執行git revert之前,請確保你的工作目錄是干凈的,即沒有未提交的更改。
  2. git revert會創建一個新的提交來撤銷先前的更改,所以你的提交歷史會保留下來。
  3. 如果你想要丟棄工作目錄中的所有未提交更改,應該使用git reset命令,特別是--hard選項。但是請注意,這將會改變你的提交歷史。

?五、示例?

假設你有以下的提交歷史:

text

* abc1234 (HEAD -> master) Merge feature-branch into master

* d7e6b2d (feature-branch) Add new feature

* 3a6c0f2 (master) Initial commit

其中,abc1234是一個合并提交,feature-branch被合并進了master。現在,你想撤銷這個合并提交,并希望保留master分支的變更,因此使用命令:

bash

git revert -m 1 abc1234

這個命令會創建一個新的提交,撤銷合并操作中的更改,實際上它將會恢復到abc1234合并之前的狀態,但歷史記錄仍會保留合并提交。新的提交將會與abc1234之后的提交一起繼續保留在歷史中。

小結:

? ? ? ? 個人感覺,revert的意思是回滾、恢復。并不是刪除,使用后即是回滾到指定版本之前的版本,只不過,回滾并不刪除指定版本及之后已經提交的版本在Git中的記錄?那么,這種回滾只適用于某個版本之后的版本后續可能不需要用的情況吧。而不是開篇問題提到的,只是將某個版本刪除,版本庫的最好這個版本記錄都沒有了,而且,其他的版本都不影響,即,這個版本之后提交的版本,依然按順序全部保留。

個人感覺revert不滿足要求。

2、DeepSeek給出的一種:

?使用?git filter-repo?徹底清除提交

(適用于刪除含敏感信息的大文件或提交)

bash

# 安裝 git-filter-repo
pip install git-filter-repo# 刪除指定提交(如 abc123)
git filter-repo --invert-paths --commit abc123# 強制推送清理后的倉庫
git push origin --all --force

嘗試,沒效果。第一步安裝沒問題,第二步,報語法錯誤,不成功。第三步執行時,報不需要推送,沒有更新。回到遠程Git分支看,提交記錄確實沒有變化。

總結:

那么,是Git沒有這種操作么?不允許?還是沒找到辦法,未完,繼續探索中。

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

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

相關文章

使用 Pandas 進行多格式數據整合:從 Excel、JSON 到 HTML 的處理實戰

前言 在數據處理與分析的實際場景中&#xff0c;我們經常需要整合不同格式的數據&#xff0c;例如 Excel 表格、JSON 配置文件、HTML 報表等。本文以一個具體任務&#xff08;藍橋杯模擬練習題&#xff09;為例&#xff0c;詳細講解如何使用 Python 的 Pandas 庫結合其他工具&…

今日行情明日機會——20250425

指數依然在震蕩&#xff0c;等待方向選擇&#xff0c;整體量能不搞但個股紅多綠少。 2025年4月25日漲停板行業方向分析如下&#xff1a; 一、核心行業方向及驅動邏輯 一季報增長&#xff08;17家漲停&#xff09; 核心個股&#xff1a;惠而浦、鴻博股份、衛星化學驅動邏輯&am…

Python 快速獲取Excel工作表名稱

文章目錄 前言準備工作Python 獲取Excel中所有工作表的名稱Python 獲取Excel中隱藏工作表的名稱 前言 在數據分析與辦公自動化領域&#xff0c;通過Python處理Excel文件已成為必備技能。通過獲取工作表名稱&#xff0c;我們可以&#xff1a; 快速了解文件結構自動化處理多工作…

寧德時代25年時代長安動力電池社招入職測評SHL題庫Verify測評語言理解數字推理真題

測試分為語言和數字兩部分&#xff0c;測試時間各為17分鐘&#xff0c;測試正式開始后不能中斷或暫停

ECMAScript 1(ES1):JavaScript 的開端

1. 版本背景與發布 ●發布時間&#xff1a;1997 年 6 月&#xff0c;由 ECMA International 正式發布&#xff0c;標準編號為 ECMA-262。 ●歷史意義&#xff1a;ES1 是 JavaScript 的首個標準化版本&#xff0c;結束了 Netscape Navigator 與 Internet Explorer 瀏覽器間腳本語…

C語言面試高頻題——define 和typedef 的區別?

1. 基本概念 (1) #define 定義&#xff1a;#define 是預處理指令&#xff0c;用于定義宏。作用&#xff1a;在編譯之前進行文本替換。語法&#xff1a;#define 宏名 替換內容示例&#xff1a;#define PI 3.14159 #define SQUARE(x) ((x) * (x))(2) typedef 定義&#xff1a;…

【自然語言處理與大模型】模型壓縮技術之蒸餾

知識蒸餾是一種模型壓縮技術&#xff0c;主要用于將大型模型&#xff08;教師模型&#xff09;的知識轉移到更小的模型&#xff08;學生模型&#xff09;中。在大語言模型領域&#xff0c;這一技術特別重要。 知識蒸餾的核心思想是利用教師模型的輸出作為軟標簽&#xff08;sof…

PHP CURL發送POST請求(支持HEADER參數配置)

/** POST請求(raw數據請求,支持HEADER參數配置) * @param $url * @param $datas 支持數組或字符串 * # $CURLOPT_HTTPHEADER = [ X-AjaxPro-Method:ShowList, Content-Type: application/json; charset=utf-8, Content-Length: . strlen($data_string)]; …

利用JMeter代理服務器方式實現高效壓測

前言 在當今快節奏的互聯網時代&#xff0c;確保Web應用和服務能夠在高負載下穩定運行變得至關重要。無論是電子商務平臺、社交媒體網絡還是在線教育服務&#xff0c;用戶對網站響應速度和穩定性的期望從未如此之高。因此&#xff0c;性能測試不再是一個可選項&#xff0c;而是…

【JavaWeb后端開發04】java操作數據庫(JDBC + Mybatis+ yml格式)詳解

文章目錄 1. 前言2. JDBC2.1 介紹2.2 入門程序2.2.1 DataGrip2.2.2 在IDEA執行sql語句 2.3 查詢數據案例2.3.1 需求2.3.2 準備工作2.3.3 AI代碼實現2.3.4 代碼剖析2.3.4.1 ResultSet2.3.4.2 預編譯SQL2.3.4.2.1 SQL注入2.3.4.2.2 SQL注入解決2.3.4.2.3 性能更高 2.4 增刪改數據…

力扣-240.搜索二維矩陣 II

題目描述 編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性&#xff1a; 每行的元素從左到右升序排列。每列的元素從上到下升序排列。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, in…

Spark-Streaming(三)

一. kafka和flume的整合 任務需求一:利用flume監控某目錄中新生成的文件&#xff0c;將監控到的變更數據發送給kafka&#xff0c;kafka將收到的數據打印到控制臺 1. 在flume/conf/目錄下添加flume-kafka.conf文件 配置文件如下 2. 啟動flume和kafka消費者 3. 傳入數據 查看fl…

Spring Boot 啟動生命周期詳解

Spring Boot 啟動生命周期詳解 1. 啟動階段劃分 Spring Boot 啟動過程分為 4個核心階段&#xff0c;每個階段涉及不同的核心類和執行邏輯&#xff1a; 階段 1&#xff1a;預初始化&#xff08;Pre-initialization&#xff09; 目標&#xff1a;準備啟動器和環境配置關鍵類&am…

《深入理解 AOP》

一、AOP 是什么 AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff0c;即面向切面編程&#xff0c;是軟件開發中一種重要的編程范式。它通過橫向抽取機制&#xff0c;將那些與業務邏輯本身無關、卻為業務模塊所共同調用的邏輯或責任&#xff08;如事務處理、日…

Python【協程(Coroutine)和線程的關系】

協程(Coroutine)和線程都是實現并發編程的技術&#xff0c;但它們在實現方式、使用場景和性能上有顯著區別。理解它們的關系與差異有助于在實際應用中選擇合適的并發模型&#xff0c;以下是它們的核心關系與對比分析&#xff1a; 一、核心關系 互補關系 協程和線程可以結合使用…

Springboot——Redis的使用

在當今的軟件開發領域&#xff0c;緩存技術是提升應用性能的關鍵手段之一。Redis 作為一款高性能的鍵值對存儲數據庫&#xff0c;憑借其出色的讀寫速度和豐富的數據結構&#xff0c;在緩存場景中得到了廣泛應用。Spring Boot 作為一款簡化 Spring 應用開發的框架&#xff0c;與…

BEVPoolv2:A Cutting-edge Implementation of BEVDet Toward Deployment

背景 該論文是在BEVDet的基礎上進行了一個調整優化&#xff0c;傳統的方法是將特征圖與深度預測進行外積得到視椎特征圖&#xff0c;再將它與預處理好的體素索引結合&#xff0c;將每個視椎特征分類到每個voxel中進行累加和的操作。BEVFusion與BEVDepth等方法是避免了累加和&a…

藍橋杯常考的找規律題

目錄 靈感來源&#xff1a; B站視頻鏈接&#xff1a; 找規律題具有什么樣的特點&#xff1a; 報數游戲&#xff08;Java組&#xff09;&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 思路詳解&#xff1a; 代碼詳解&#xff1a; 階乘求和&#xff08;Java組…

使用ffmpeg 將圖片合成為視頻,填充模糊背景,并添加兩段音樂

1.輸入3張圖片,每張播放一次,播放兩秒,視頻分辨率設置為1920:1080,每張圖片前0.3秒淡入,后0.3秒淡出,圖片寬高比不變,用白色填充空白區域 ffmpeg -loop 1 -t 2 -i "img1.jpg" \-loop 1 -t 2 -i "img2.jpg" \-loop 1 -t 2 -i "img3.jpg" \-filte…

PostgreSQL技術內幕29:事件觸發器tag原理解析

文章目錄 0.簡介1.概念說明2.tag的生成和存儲2.1 tag合法性校驗2.2 內存中存儲2.3 持久化存儲 3.tag的觸發 0.簡介 在上一篇文章中中&#xff0c;我們介紹了PG中的兩種觸發器&#xff0c;即適合于DML的普通觸發器和對于DDL的事件觸發器&#xff0c;其中事件觸發器與常規的 DML…