gitリポジトリを軽くしよう!|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社エンジニアの「?」を「!」に。CONTACTTOP開発gitリポジトリを軽くしよう!開発2012.05.22gitリポジトリを軽くしよう!babaシェアツイートブックマークLINEgitリポジトリの使い方を間違えると、非常に重くなってしまうことがあります。巨大なファイルをコミットしてしまった関連プロジェクトを1個のリポジトリにまとめすぎたまずは犯人を捜す以下のコマンドで、コミットログをサイズと一緒に見ることができます。--stat眺めながら、怪しいコミットがいないか探してみましょう。.git/objectsの中から重たいファイルを探して、バイナリエディタで眺めることでも、怪しいファイルの見当を付けられます。巨大なファイルをコミットしてしまったgitはソースコード管理システムなので、巨大なファイルを管理するのには向きません。statusなどの基本的な操作も含めて急激に遅くなってしまいます。コミットしたものをrmしても、履歴は削除されないので、間違って2GBのダンプファイルをコミット+pushしてしまったような人は以下のようにして削除できます。memoryを吐いて何も出来なくなりました...リポジトリをまとめすぎたSVNでは部分チェックアウトが便利だったので、関連するプロジェクトを1個のリポジトリにまとめることがよくありました。Webシステムのソースコードと、連携するAndroidアプリのソースコードを1個のリポジトリにすると言った具合です。gitは部分チェックアウトの概念が無く、以下の理由から、ある程度細かい単位でリポジトリを分けた方が運用上楽です。リポジトリサイズが大きくなると、動作が極端に遅くなる権限をフォルダごとに権限を設定できないrailsでcapistranoやjenkinsを使う際にサブディレクトリだと設定が煩雑化するすでにまとまってしまっている場合は、以下のように分割しましょう。gitでは分割は出来ないので、実際にはcloneして必要な部分だけ抽出することになります。.してみると、あまり小さくなっていないことがあります。この場合、以下のようにすると軽量化できます。gcが上手く効いてくれないことがあるので、その場合はcloneし直してから再実行すると小さくなることがあります。注意点filter-branchは、履歴を書き換えるコマンドです。コミットのハッシュ値は当然変わりますし、あとからmergeしなきゃいけないことに気づいたり他の人がpushしたりすると、かなりカオスになりかねません。取扱には気をつけましょう。ungit(人気記事)シェアツイートブックマークLINEこの記事を書いた人babaゆとりプログラマー。BPS設立初期に在学中から参加している最古参メンバーの一人。Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。Gold、AWSソリューションアーキテクト(アソシエイト)、日商簿記2級、漢検準1級などを保有。Storageを使ってはいけない(翻訳)#Tags#会社紹介#自社サービス#勉強会#Rails#PHP#デザイン#実績#週刊RailsウオッチCONTACTお気軽にご相談ください。(翻訳)CONTACTTechRachoでは、パートナーシップをご検討いただける方からのご連絡をお待ちしております。お気軽にご意見・ご相談ください。