工作好きな情報系の雑記

[Git]うっかりコミットしてしまった余分なファイルを.gitから削除する方法

自動生成ファイルとかを.gitignoreで無視するの忘れて、全部いっしょくたにcommitしちゃうこと、あるよね~。

後になって.gitがめちゃデカくなって後悔する事、あるよね~。

って事で、.gitを軽量化する方法。

バックアップを取る

リポジトリの履歴を書き換える作業になるので、何かあったら大変。
リポジトリのコピーを丸々とっておくとかしてバックアップを取っておく。

.git/objectsのサイズを調べる

サイズを調べておく。

.gitの中で大きいファイルを調べる

このサイトのスクリプトをダウンロード。スクリプトの中身は以下の通り。

これを実行すると、.gitのなかでどのファイルが大きいか調べてくれる。

これをもとに.gitignoreを書く。

.gitリポジトリから削除

以下のようなスクリプトを書く。
TARGETSの中は、削除したいファイルを指定。
.gitignoreと同じような感じで指定できるので、.gitignoreを見ながら指定。

そしたら実行。

終わったら、リモートリポジトリに強制的にプッシュ。

そして、ローカルの.gitリポジトリのサイズを削減(今までの操作による悪影響がない事を確認してから実行する事!)。

効果を確認して完了

もう一度duやgit_find_big.shを実行して、サイズが小さくなっていたら軽量化完了。
場合によってはまだ小さくなってない事もあるけど、この時点でリモートリポジトリの.gitのサイズは小さくなっているので、.gitフォルダだけリモートからダウンロードして、ローカルの.gitに上書きしてしまってもよい。

この記事は(http://qiita.com/advent-calendar/2015/git)の8日目の記事です。## Gitリポジトリのメンテ?Gitリポジトリにあるファ...
Gitリポジトリをメンテナンスして軽量化する - Qiita - Qiita
こんにちは。社内でGCP(特にGAE)を布教しているkaneshinです。 プロジェクトのバージョン管理としてGitを利用しているチームは多いと思います。 最近はエンジニア以外にもコミットをしてもらってプロジェクトのチーム全体でコミットすることも少なくないですが、Gitにそこまで詳しくない人が間違えてサイズの大きいファイルをコミットしてしまうとfetchやcloneするのに時間がかかるようになってしまいます。 一度コミットしてしまったファイルを無かったことにするにはコミット履歴から抹消してやる必要があります。 今回は「容量の...
Gitリポジトリから容量の大きいファイルを履歴から抹消する | eureka tech blog - eureka tech blog
Git の履歴を過去に遡って一括で改変するには、git filter-branch というコマンドが使えるそうです。Rails4.1 にアップデートしてから、config/secrets.yml を .gitignore に追加し忘れていて...
Git の履歴からファイルを完全に削除する – git filter-branch - EasyRamble
If you commit sensitive data, such as a password or SSH key into a Git repository, you can remove it from the history. To entirely remove unwanted files from a repository's history you can use either the `git filter-branch` command or the BFG Repo-Cleaner.…
Removing sensitive data from a repository - User Documentation  - 

 

モバイルバージョンを終了