1. ホーム
  2. git

[解決済み] master よりも 5 コミット先にあるブランチのコミットで、大きすぎるファイルを削除する方法

2023-06-30 02:34:19

質問

私はこの問題で一日中立ち往生しています、ここで答えを探しています :( ...

コンテキスト

私はあるプロジェクトで一人で作業しており、自分のコンピュータ以外の場所に作業内容を保存するために今までgithubを使用していました。 残念ながら、私はローカルリポジトリに非常に大きなファイルを追加しました:300mb(これはGithubの制限を超えています)。

私がしたこと

自分が作ったものの履歴を作ってみる。

  1. 私は(間抜けにも)すべてをインデックスに追加しました :

    git add *
    
    
  2. 変更をコミットしました。

    git commit -m "Blablabla"
    
    
  3. オリジンマスターにプッシュしようとしたのですが

    git push origin master 
    
    

    しばらく時間がかかったので、CTRL+Cで、ステップ2と3を4回繰り返し、ファイルが大きすぎてgithubにプッシュできないことに気がつきました。

  4. 私は大きなファイルを削除するという大変な間違いを犯しました (git rm を行ったか、単純な rm を行ったか覚えていません)。

  5. の指示に従いましたが、( https://help.github.com/articles/remove-sensitive-data )

  6. ブランチをgit filterしようとすると、以下のエラーが表示されます : "ブランチを書き換えることができません。You have unstaged changes."

ありがとうございました。

どのように解決するのですか?

ファイルを削除すると、それは変更となり、git が文句を言っているのはステージされていない変更です。 git status を実行すると、ファイルが removed/deleted と表示されるはずです。 この変更を取り消すには git checkout -- <filename> . そうすると、ファイルは元に戻り、ブランチはきれいになります。 また git reset --hard を実行すると、コミットした時点の状態に戻ります。

私は、あなたが削除したい非常に大きなファイルを持つ最後のコミットであると仮定しています。 この場合 git reset HEAD~ それから、コミットをやり直します (大きなファイルは追加しません)。 そうすれば、あなたは git push を問題なく実行できるはずです。

このファイルは最後のコミットに含まれていないので、問題なく最後のステップを行うことができます。 変更をコミットまたは削除する必要があるだけです。

http://git-scm.com/book/en/Git-Tools-Rewriting-History