三種清除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