

.gitの軽量化に関する質問です。  
Eclipseのワークスペースをgit管理しています。

git管理を始めた時、.gitignoreを書き忘れていたため、「.metadata」と「.recommenders」のフォルダも管理されてしまいました。このフォルダの中身はソースコードとは直接は関係なく、自動的に生成されるファイルであり、commitするたびに大量の自動生成ファイルも変更があったとして一緒にcommitされてしまいます。  
おかげで.gitフォルダのサイズが大きくなってきてしまいました。

.gitフォルダの軽量化のために、.gitignoreを作成し、以下のサイトに従って「.metadata」と「.recommenders」を管理から外し、履歴から削除しました。  
<https://qiita.com/kaneshin/items/0d19fc1cd86f931dc855>  
<https://developers.eure.jp/tech/alternative-git-history/>

また、上記の操作だけではローカルの.gitのサイズが減らないという事で以下のサイトにあるように、次の操作をしました。  
<http://easyramble.com/git-filter-branch.html>  
<https://help.github.com/articles/removing-sensitive-data-from-a-repository/>

[code]

    $ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
    $ git reflog expire --expire=now --all
    $ git gc --prune=now
    
[/code]

しかし、結局.gitのサイズが小さくなりませんでした。  
上記の操作後も、まだ.gitの中に「.metadata」と「.recommenders」内のファイルが残ってしまっているようです。

[code]

    USER-MacBook-Air:workspace user$ ./git_find_big.sh
    All sizes are in kB's. The pack column is the size of the object, compressed, inside the pack file.
    size   pack   SHA                                       location
    28036  10111  50646ee98af5fa19a4538a727261cd73304cddeb  .metadata/.plugins/org.eclipse.jdt.core/3352301917.index
    7054   2191   630a04c4153d31b0b917a52b6eb24514dcbc0f50  .metadata/.plugins/org.eclipse.jdt.core/1940685342.index
    4904   828    ba10aebf34fd60bd0cf5b583a3cd7a26265bf602  .recommenders/index/http___download_eclipse_org_recommenders_models_neon_/_2.fdt
    4198   865    ecd13c61f37be37a57f64452e4d89ae7fcac5e59  .metadata/.plugins/org.eclipse.jdt.core/2071773772.index
    4021   1243   0b4fb63b024e896069e4297d5828a4853a0e33b0  .metadata/.plugins/com.python.pydev.analysis/python_v1_874innp8uovopkka84p4pwnaw/python.pydevsysteminfo
    3941   1218   0b692374a3adaa49fa0744bb5ef7d12c99ed743c  .metadata/.plugins/com.python.pydev.analysis/python_v1_874innp8uovopkka84p4pwnaw/python.pydevsysteminfo
    3883   1198   096c00c9afb87e9fc4f8794862e668ef81acee6e  .metadata/.plugins/com.python.pydev.analysis/python_v1_874innp8uovopkka84p4pwnaw/python.pydevsysteminfo
    3497   1077   9781c44e0f3721f3b5299dd8a9537e733adc56f5  .metadata/.plugins/com.python.pydev.analysis/python_v1_874innp8uovopkka84p4pwnaw/python.pydevsysteminfo
    2878   856    5d4b2620c4d6572690ab4ce341e7d29827f3a302  .metadata/.plugins/com.python.pydev.analysis/python_v1_bm109oo8jsa5gnqmc06ekl12p/python.pydevsysteminfo
    2873   855    180f6531173e20a51fcc648e80ecf7133379df62  .metadata/.plugins/com.python.pydev.analysis/python_v1_bm109oo8jsa5gnqmc06ekl12p/python.pydevsysteminfo
    
[/code]

どうしたら.gitのサイズを小さくすることができるでしょうか？  
皆様の助言お待ちしております。よろしくお願いいたします。

追記:  
git_find_big.shは以下のようなスクリプトになっています。

[code]

    #!/bin/bash
    #set -x 
    
    # Shows you the largest objects in your repo's pack file.
    # Written for osx.
    #
    # @see http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/
    # @author Antony Stubbs
    
    # set the internal field spereator to line break, so that we can iterate easily over the verify-pack output
    IFS=$'\n';
    
    # list all objects including their size, sort by size, take top 10
    objects=`git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr | head`
    
    echo "All sizes are in kB's. The pack column is the size of the object, compressed, inside the pack file."
    
    output="size,pack,SHA,location"
    for y in $objects
    do
        # extract the size in bytes
        size=$((`echo $y | cut -f 5 -d ' '`/1024))
        # extract the compressed size in bytes
        compressedSize=$((`echo $y | cut -f 6 -d ' '`/1024))
        # extract the SHA
        sha=`echo $y | cut -f 1 -d ' '`
        # find the objects location in the repository tree
        other=`git rev-list --all --objects | grep $sha`
        #lineBreak=`echo -e "\n"`
        output="${output}\n${size},${compressedSize},${other}"
    done
    
    echo -e $output | column -t -s ', '
    
[/code]

さらに追記:  
上記の操作を行ったのち、リモートリポジトリから改めてローカルにクローンしてみたところ、クローンしたリポジトリ内の.gitフォルダのサイズは縮小されていました。  
上記の操作によってきちんと.metadataと.recommendersの削除は行われていたようです。  
クローンした.gitをサイズの小さくならなかった元々の.gitと置き換えることで、とりあえず当初の目的を達成することはできました。

なぜローカルのサイズが小さくならなかったのかは未だに分かりませんが、とりあえずサイズの縮小はできたという報告をしておきます。


CC BY-SA 3.0
2018-01-17T07:14:37.683
41027
2018-01-27T06:14:50.830
2018-01-27T06:14:50.830
25734
25734
question
git eclipse
filter-branchを使っても、ローカルの.gitのサイズが小さくならない