facebook twitter hatena line email

「Git/大きなファイル履歴削除」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(bfgインストール)
 
行15: 行15:
 
==gitで大きいファイル検出==
 
==gitで大きいファイル検出==
 
# 再度大きなファイルを検出(削除を確認)
 
# 再度大きなファイルを検出(削除を確認)
 +
<pre>
 
git rev-list --objects --all | \
 
git rev-list --objects --all | \
 
   git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
 
   git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
行20: 行21:
 
   sort --numeric-sort --key=2 | \
 
   sort --numeric-sort --key=2 | \
 
   tail -n 10
 
   tail -n 10
 +
</pre>
  
 
==100MB以上のgit履歴削除==
 
==100MB以上のgit履歴削除==

2025年12月25日 (木) 15:39時点における最新版

bfgとは

git履歴の大きめファイルを削除してくれるツール

準備

javaが必要なのでインストール

mac/インストール/java [ショートカット]

bfgインストール

cd /d/src
curl -o bfg.jar https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar

gitで大きいファイル検出

  1. 再度大きなファイルを検出(削除を確認)
git rev-list --objects --all | \
  git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
  awk '/^blob/ {print substr($0,6)}' | \
  sort --numeric-sort --key=2 | \
  tail -n 10

100MB以上のgit履歴削除

履歴削除前に、そのファイルがgitに含まれてれば、削除commitしておく。

cd repo1
java -jar /d/src/bfg.jar --strip-blobs-bigger-than 100M .git

出力

Deleted files
-------------
	Filename                       Git id
	----------------------------------------------------------------------------
	FirebaseCppApp-10_0_0.bundle | 2aa412eb (136.0 MB)
	FirebaseCppApp-11_4_0.bundle | a4f977b7 (154.1 MB)
	FirebaseCppApp-11_5_0.bundle | d49e044e (154.4 MB)
	FirebaseCppApp-6_10_0.so     | 12be4e70 (104.6 MB)
	FirebaseCppApp-7_1_0.so      | 8bcae0eb (105.0 MB)
	FirebaseCppApp-8_1_0.so      | 9c855169 (120.4 MB)
	FirebaseCppApp-9_1_0.bundle  | f2986ef8 (131.7 MB)
	NotoSansJP-Regular SDF.asset | 9c726834 (131.2 MB), fe2ee0e8 (131.2 MB)
	thumbnail.key                | bf3026f8 (205.6 MB), 5e8540cf (262.5 MB), ...

色々削除してくれた様子。

今も、使ってるファイルのgit履歴は、消えてない模様。

指定ファイルの削除

履歴削除前に、そのファイルがgitに含まれてれば、削除commitしておく。

パスは含めるとエラーになるので、ファイル名のみで、パスは、含めないないこと

java -jar /d/src/bfg.jar --delete-files large_file.zip .git