1. 程式人生 > >三種清除Git提交歷史的方法

三種清除Git提交歷史的方法

在專案實際開發過程中,可能由於工作的原因,上傳了一些敏感資訊,例如測試的賬戶名與密碼,但是後續的工作有需要將專案公開,為了避免資訊洩露,那麼必須清除Git的提交歷史記錄,經過測試,大致可以採用如下三種方法。

在這裡再次強調一次,現在有很多工具與方法從git的提交歷史中爬取敏感資訊,所以,即使是刪除了原有的檔案內容,資訊依舊會洩露,例如郵箱密碼、登陸密碼等。有人可能覺得這些密碼洩露了也不要緊,但是你想過了這些密碼與你其他賬戶密碼的關聯性了嗎?所以,一定要時時刻刻保護好自己的敏感資料,說得嚴重點,你還可能因為自己的一時疏忽而違法,至於因為疏忽丟工作,那時常見的事。

請參見刑法第二百五十三條

國家機關或者金融、電信、交通、教育、醫療等單位的工作人員,違反國家規定,將本單位在履行職責或者提供服務過程中獲得的公民個人資訊,出售或者非法提供給他人,情節嚴重的,處三年以下有期徒刑或者拘役,並處或者單處罰金。

1. 採用filter-branch命令

這是網上推薦使用最多的一種方法,具體請參見《Git如何永久刪除檔案(包括歷史記錄)》,但這種方法有一個致命的問題,那就是慢,並且非常慢,一般一個提交記錄在百次左右的專案,完整執行所有的操作,至少需要一天,並且不方便的地方還在於,需要一個一個地列舉所有的檔案(可以使用批處理),依次進行操作。

所以,這種方法只適用於清除單個檔案的提交歷史,並且必須知道所有的檔名。

2. BFG Repo-Cleaner工具

3. 最直接、暴力與簡單的方法

這也是我強烈推薦的,因為暴力、直接、簡單,假定原有的遠端倉庫為A,操作分為四步:
1. 新建另一個遠端倉庫,命名為B;
2. 將現有的原生代碼提交到遠端倉庫B;
3. 刪除現有的遠端倉庫A;
4. 將遠端倉庫B命名為A;

結論

清除所有Git版本歷史,我認為最簡單的方法來自於第三種。

相關推薦

清除Git提交歷史方法

在專案實際開發過程中,可能由於工作的原因,上傳了一些敏感資訊,例如測試的賬戶名與密碼,但是後續的工作有需要將專案公開,為了避免資訊洩露,那麼必須清除Git的提交歷史記錄,經過測試,大致可以採用如下三種方法。 在這裡再次強調一次,現在有很多工具與方法從git的提

jQuery使用serialize(),serializeArray()方法取得表單數據+字符串和對象類型兩表單提交方法

var fun .ajax clas copy art 表單提交 post 姓名 轉載自: http://blog.csdn.net/zqtsx/article/details/28655717 原始form表單值獲取方式(手動): [javascript] v

C#創建對象方法所需時間比較。。。。。

http common AD ins eat 通過 png pos sem   C#創建對象的三種方法 new()、Activator、Assembly,接下來通過代碼直接來看看運行的速度。。。。   首先,先看看三種創建對象實例的方法: //new

java反射機制——獲取class物件的方法

package cn.itcast.reflect.demo; import cn.itcast.bean.demo.Person; /** * * 獲取Class物件的3中方法: * * * */ public class ReflectDemo1 { public st

Android應用開發中常見的圖片壓縮方法

Android應用開發中三種常見的圖片壓縮方法,分別是:質量壓縮法、比例壓縮法(根據路徑獲取圖片並壓縮)和比例壓縮法(根據Bitmap圖片壓縮)。 一、質量壓縮法 private Bitmap compressImage(Bitmap image) { ByteArrayOutput

php獲取拓展名的方法

<?php header('content-type:text/html;charset="utf-8"'); $str='1.jpg'; echo '字串函式:'.strchr($str,'.jpg'); echo '<br/>'; echo '檔案函式:'.

java的實現定時任務的方法

/**   * 普通thread   * 這是最常見的,建立一個thread,然後讓它在while迴圈裡一直執行著,   * 通過sleep方法來達到定時任務的效果。這

Spring-02 -Spring 建立物件的方式 :1.通過構造方法建立/2.例項工廠/3.靜態工廠

通過構造方法建立      1.1 無參構造建立:預設情況.     1.2 有參構造建立:需要明確配置       1.2.1 需要在類中提供有參構造方法       1.2.2 在 applicationContext.x

Prettier的使用場景和使用方法

Prettier是最近很火的一個程式碼美化工具,其中文意思是“漂亮的、機靈的”,它能夠解析程式碼,使用你自己設定的規則來重新打印出格式規範的程式碼。 他的整個圈子很強大,有基於各種編輯器的外掛(vs code,atom),有指令碼類的,有外掛類的(eslint

關於webservice的java客戶端對接方法

第一次寫文章,所以裡邊會有些措辭或者描述不清楚的問題,請見諒 首先webservice大家肯定已經耳熟能詳了,而且webservice屬於比較古老的技術,但一些比較老的公司,由於架構的比較早,而且經歷數次迭代,人員更替,舊的技術很難優化,所以難免會遇到對接webservic

定義JQuery預載入方法及JQuery選擇器

jQuery頁面預載入方法: jQuery(document).ready(function(){     alert("222"); }); jQuery(function(){     alert("33

解密 HTTPS 流量的方法介紹

提醒:本文最後更新於 967 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 Web 安全是一項系統工程,任何細微疏忽都可能導致整個安全堡壘土崩瓦解。拿 HTTPS 來說,它的「內容加密、資料完整性、身份認證」三大安全保證,也會受到非法根證書、服務端配置錯誤、SSL 庫漏洞、私鑰被盜等等風險

Hibernate中物件的狀態,以及狀態間的轉化方法

在Hibernate中有三種狀態,對它的深入理解,才能更好的理解hibernate的執行機理,剛開始不太注意這些概念,後來被別人問到了,說是面試題,才發現它是重要的。對於需要持久化的JAVA物件,在它的生命週期中有三種狀態,而且互相轉化。 Hibernate三種狀態之一

JAVA實現單例模式方法(二):使用靜態內部類實現單例設計模式

靜態程式碼塊和靜態內部類的載入順序:當呼叫外部類的建構函式是,外部類的靜態程式碼塊同時被載入,但是其內部類不會同時被載入;當且僅當內部類的靜態域或其構造方法或其靜態方法被呼叫時,內部內才被載入。 因此,通過內部內實現單例,就能實現延遲載入。 這個解決方案被稱為Lazy i

python裡等待元素出現的方法

在做web或app的自動化測試經過會出現找不到元素而報錯的情況,很多時候是因為元素還沒有被加載出來,查詢的程式碼就已經被執行了,自然就找不到元素了。那麼我可以用等待元素載入完成後再執行查詢元素的code。Python裡有三種等待的方式:一、強制等待Sleep(54) 這個方法

二.爬蟲:Python網頁內容抓取方法

使用 Beautiful Soup 解析 html 檔案 #!/usr/bin/pytho

Canvas動態畫圓實現方法說明

前言 canvas是HTML5出來的繪圖API容器,對於圖形的處理非常強大,下面使用canvas配合JavaScript來做一下動態畫圓效果。可以用它來做圓形進度條來使用。 這裡我個人總結了3種實現方法,大家可以參考一下。 方法一:arc(

Hibernate學習筆記(四)----核心開發介面、物件的狀態、session常用方法

a)       AnnotationConfiguration b)       進行配置資訊的管理 c)       用來產生SessionFactory d)       可以在configure方法中指定hibernate配置檔案 e)       只關注一個方

常用的幾清除float浮動的方法 一、浮動產生原因 簡單地說,浮動是因為使用了float:left或float:right或兩者都有而產生的浮動,導致樣式缺失或者不正確顯示等問題; 二、浮動產生

一、浮動產生原因 簡單地說,浮動是因為使用了float:left或float:right或兩者都有而產生的浮動,導致樣式缺失或者不正確顯示等問題;二、浮動產生負作用1、背景不能顯示由於浮動產生,如果對父級設定了(CSS background背景)CSS背景顏色或CSS背景圖片,而父級不能被撐開,所以導致CSS

Oracle、Vertica和Hive資料庫查詢表空間的方法

最近在工作中碰到了查詢Oracle、Vertica和Hive表空間的需求,整理如下: IDE分類: Oracle—PLSQL DEVELOPER; Vertica—DBVisualizer; Hive—SecureCRT; 資料庫分類: O