すでに削除した大きなファイルがあるため、GitHub にプッシュできません 質問する

すでに削除した大きなファイルがあるため、GitHub にプッシュできません 質問する

現在私は

  1. 空の GitHub リポジトリ
  2. SSH サーバー リポジトリ (メイン)
  3. ローカルリポジトリ

SSH サーバー リポジトリは最新のリポジトリ (本番サイト) だったので、そこからローカルに Git クローンしました。次に、git pushGitHub にクローンしようとしました。

すべて正常に進みましたが、filename.gz が GitHub には大きすぎるというメッセージが表示されました。このファイルは必要なかったので、Git コマンドをいくつか実行して Git キャッシュから削除し、SSH サーバーにプッシュバックしました。

ローカルでは大きなファイルは表示されませんが、SSH サーバー上にはまだ存在しています。git diff何も返されず、git push は「すべてが最新です」を返します。また、ローカル リポジトリでファイルが表示されなくても、GitHub にプッシュしようとすると、エラーが発生します。

リモート: エラー: ファイル fpss.tar.gz は 135.17 MB です。これは GitHub のファイル サイズ制限 100 MB を超えています

「問題の解決」の手順に従いましたGitHubヘルプに掲載それで十分ではなかったでしょうか?

ファイルがローカルに存在せず、git status/diff/push にもリストされていない場合、どのようにしてファイルがまだ存在しているのでしょうか?

ベストアンサー1

使用できます

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' HEAD

これにより、そのファイルの履歴にあるすべての内容が削除されます。問題は、そのファイルが履歴に残っていることです。

このコマンドはコミットのハッシュを変更するため、特に共有リポジトリでは大きな問題となる可能性があります。結果を理解せずに実行しないでください。

編集: Git プロジェクトでは、現在、git filter-repoの代わりにを使用することを推奨していますgit filter-branch


使用git filter-repo

WARNING: git-filter-branch has a glut of gotchas generating mangled history
         rewrites.  Hit Ctrl-C before proceeding to abort, then use an
         alternative filtering tool such as 'git filter-repo'
         (https://github.com/newren/git-filter-repo/) instead.  See the
         filter-branch manual page for more details; to squelch this warning,
         set FILTER_BRANCH_SQUELCH_WARNING=1.

インストール

[brew|pip3|...] install git-filter-repo

使用法

パスプレフィックスを持つ ファイルを削除するにはexample/path/to/something、次のコマンドを実行します。

git filter-repo --path example/path/to/something--invert-paths

パスプレフィックスのない ファイルを削除するにはexample/path/to/something、次のコマンドを実行します。

git filter-repo --path example/path/to/something

おすすめ記事