53

二度と使用しないファイルを削除し、ストレージを解放して github lfs クォータに戻す方法は?

この状況で git history のファイルの参照ポイントを削除すると機能しますか?

4

3 に答える 3

5

クリスの答えは正確ではありません。0xcaff からのコメント (「これはひどい解決策です」) と組み合わせると、経験の浅いユーザー (または注意散漫な読者) を誤解させる可能性があります。

正解はウェーダーとクリスのミックスです。

かつてLFSを使用していたが、大きなファイルから履歴が削除されていないリポジトリ( と呼びましょうREPO-1)をミラーリングしたいというケースを解決しました。

先月のある時点で、REPO-1withでの LFS のサポートを削除しましたgit lfs uninstall。そして、それはその後git cloneの s で正常に機能していました (つまり、もう機能しgit-lfsません)。しかし、今日pull、以前push --mirrorのバージョンを試してみると、REPO-1メッセージが表示されましたSmudge error: Error downloading <big-filename> ... Object does not exist on the server: [404] Object does not exist on the server

したがって、LFS と一度追跡されたファイルへの参照を取り除きたい場合は、次の手順を実行する必要があります。

  1. リポジトリから LFS をアンインストールします。
  2. リポジトリの履歴を消去します。
  3. 古い(github)リポジトリを削除(または名前を変更)し、新しいリポジトリを作成して、クリーンなリポジトリをそこにプッシュします。

1

LFS のアンインストールは、 git lfs uninstallのような単純なコマンドで実行できます。

2

リポジトリの履歴を消去するのは少し怖いですが、Github ドキュメントのgit filter-branch項目3 -- https://help.github.com/en/articles/removing-sensitive-data-from-a-repository --で問題なく動作します。 - 十分なはずです:

$ git filter-branch --force --index-filter \
      "git rm --cached --ignore-unmatch FILENAME-1 FILENAME-2 FILENAME-3" \
      --prune-empty --tag-name-filter cat -- --all

3

リポジトリの削除と再作成は見た目ほど破壊的ではありません。ローカル リポジトリは、Github にあるものの完全に独立した自己維持型のクローンであることを思い出してください。ローカル (クリーン) バージョンを新しい空のリポジトリにプッシュすると、その (削除/作成) は起こらなかったようになります。

于 2019-09-05T15:46:47.080 に答える