100MBを超えるファイルを間違えてコミットしてgit pushできない、、

gitignoreの設定をせずにcommitしていたら、100MBを超えるファイルをコミットしてしまい、 githunにpushができなくなってしまった、、

$ git push
Counting objects: 29, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (29/29), 36.99 MiB | 1.17 MiB/s, done.
Total 29 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: File example/.terraform/plugins/darwin_amd64/terraform-provider-aws_v2.62.0_x4 is 176.06 MB; this exceeds GitHub's file size limit of 100.00 MB

gitignoreを設定し、以下のコマンドで管理対象から外してもpushすることはできない。

$ git rm --cached example/.terraform/

gitの履歴には残っているのでpush対象から消えるわけではない。 こういう時は、以下のコマンドで履歴から抹消する必要がある。

$ git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
  --prune-empty --tag-name-filter cat -- --all

$ git push
Counting objects: 28, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (22/22), done.
Writing objects: 100% (28/28), 4.84 KiB | 261.00 KiB/s, done.
Total 28 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
To github.com:sinozu/terraform-practice.git
 * [new branch]      master -> master

できた!

詳しくはgithunのヘルプに。 help.github.com

help.github.com