2016-11-23 1 views
0

BitBucketは、2GBのレポサイズを持ち、無料でプライベートレポを持つことができるため、現在Bitbucketを使用していました。この制限は2GBに達し、BFGtutorialを使用してファイルサイズを縮小しようとしたため、レポサイズが小さくなり、以前の履歴が削除されました。残念ながら、私はレポにそれを押し込んだ後、途中で決して起こることはありません。 Unityからの私のプロジェクトフォルダが約1GBの間、私のサイズは "name.git"フォルダから2GBから約500から600MBのレポサイズに縮小されました。特に大きなゲームプロジェクトでGitのリポジトリファイルサイズを管理する際のベストアクション/移動/提案ですか?

代わりに新しいレポを作成しようとしましたが、プロジェクトをコピーして貼り付けて、LFSをインストールして、特定の種類のファイルで知られているすべての大きなファイルを直接配置しました。一度私がそれを押して、それはいつもよりも時間がかかりました。私はそれが本当に本当に時間がかかるか、おそらくそれが凍結を維持している場合、いくつかの不足している要件があると仮定して、第二の考えを持っています。 LFSは追加の10GBのストレージを提供しました(それがレポごとであるかどうかは分かりません)。

安心してバージョン管理を維持しながらオンラインバックアップを成功させるには、どうすればよいですか? GITの問題を解決しながら、私の大きなファイルをオンラインでバックアップするためのGoogleドライブ(大きなプロジェクトファイルをバックアップする最良の方法ではない)を一時的に作成しました。 Bitbucketは、小さなゲームプロジェクト(2Dまたは3D)やものに最適かもしれませんが、他の代替手段は何ですか?GitHub,Bitbucket、SVN?無料のgit repoウェブサイトには本当に大きなレポサイズのストレージが含まれていますか?

また、LFSについては、大きなファイルサイズのグループ(例:.psd、.mp3、.dae ...)のファイルタイプを追跡する前にBFGを使用する必要がありますか。

答えて

1

あなたは以下のように手順、gitのコマンドラインで、あなたのレポをリサイズすることができますファイルのローカルgit clone <URL>

  • リストのサイズに

    1. はクローンレポして、あなたがfind . -type f -printf "%s\t%p\n" | sort -nr | head -n 100
    2. を使用し、削除する必要があるかを決定することができます
    3. クリーン履歴のため、無効なスペースを節約するには、コマンドの下に使用することができます:

    git filter-branch --tag-name-filter cat --index-filter 'git rm -r --cached --ignore-unmatch filename' --prune-empty -f -- --all

    rm -rf .git/refs/original/

    git reflog expire --expire=now –all

    git gc --prune=now

    git gc --aggressive --prune=now

  • プッシュ遠隔にリサイズローカルリポジトリは、使用
      git push origin --force –allgit push origin --force –tags

    注:OSX OS上で作業している場合はGitHubとのBitbucketはgitのための異なるリモートので、GitHubの、のBitbucketとSVNの違いは主にバージョン管理システム(VCS)の差があるので、あなたもSteve Lorek's blog

    を参照することができますGITとSVNの間ではhereを参照できます。

    GitHubとBitbucketの場合、Bitbucketはプライベートレポを無料で作成できます(レポが5人以下の場合).GitHubはプライベートレポを支払う必要があります。だから、私はいつもGitHubとBitbucketのプライベートリポジトリに公開リポジトリを作成しています。

    パートII

    他の状況は、\ .git\objects\ディレクトリに、緩いオブジェクトとpackfilesをそこに持っている両方ので、我々はpackfilesにすべての緩いオブジェクトを変換して、パックファイルを扱うことができます。

    1. 隠密にpackfiles git gcにすべての緩いオブジェクトとgit count-objects -v
    2. は名前がpack-8319f98bb0c73a6f3f15905772e8743bf2d28dfd.idx
    3. リストのトップ3の最大のオブジェクトgit verify-pack -v .git/objects/pack/ pack-8319f98bb0c73a6f3f15905772e8743bf2d28dfd.idx |sort –k 3 –n | tail -3であると仮定し、その後のためにSHA-1値をコピーし、.idx packfiles find .git/objects/packを表示パックサイズをチェック最大のオブジェクトは、SHA-1がac78de3
    4. とすると、最大ファイルはsrc.zip
    5. rm -Rf .git/logsgit gcgit prune --expire now
    6. レビュー、最も初期にidをコミットコピーし、最大ファイルgit log --oneline --branches – src.zipを変更履歴をコミット見つけ、それはgit filter-branch --index-filter 'git rm --ignore-unmatch --cached git.tgz' -- a50197e ^..
    7. 無用参照rm -Rf .git/refs/originalを削除履歴にコミット変更早いからファイルを削除a50197e
    8. だと仮定パックサイズgit count-objects -v
  • +0

    私はステップ3の 'git filter-branch part'部分にあります。処理中に、「.git-rewrite」フォルダがあることがわかりました。そのフォルダを追加してコミットしてプッシュする必要がありますか? –

    +0

    気にしないでください。そのフォルダは一時的でした。 –

    +0

    @Tredecies Nocturne、** git filter-branch --tree-filter 'rm -f filename' HEAD **の代わりに –

    関連する問題