web制作をやってると、お客さんが作ったサイトをまるっと渡されて、追加ページだけ作成することがある。
この時git管理しようとサイト全てのファイルをaddしてしまうと、すごく重くなってリモートリポジトリにpushできなくなることがある。
解決法
不要なファイルのgit管理をやめる
git rm
すればgit管理から外すことができるが、一度コミットしているファイルは取り消せない。
下記のコマンドで、今までのコミット全てから任意のファイル(フォルダ)を取り除くことができる。
$ git filter-branch -f --tree-filter 'rm -rf path/to/delete/folder'
履歴も消す
上記の操作をしてもバックアップが履歴が残ってるので、まだ重すぎてpushできない。
以下のコマンドでバックアップも削除する
$ git update-ref -d refs/original/refs/heads/master
$ git gc --aggressive --prune=now
(refs/original/refs/heads/master
は、logで確認できるref名を指定)
これで、リポジトリが軽くなるので、リモートにpushできる。
一連の操作は歴史の改変な上に、バックアップの削除まで行っているので、下手すれば元に戻すことができない。
別のフォルダにコピーしてgitに頼らないバックアップをしてから作業するなど、慎重にやろう。