もう存在しない 2 つのファイルを git リポジトリから削除したいと考えています。
私はそれらを入れ、コミットし、プッシュしようとしましたが、大きすぎました. それで私はそれらを取り出し、作業を続け、コミットしてプッシュしようとしましたが、それでも同じエラーが発生しました。彼らはまだ歴史のどこかに残っていると思いました。
私はそのブランチで作業を続け、さらに 1 つのコミットを行ったため、問題を悪化させたと思います。次に、そのブランチを master ブランチにマージしました。
そこで、解決策を探してbfgを見つけました。
しかし、ページの指示は私には意味がありません。
最初に、
$ git clone --mirror git://example.com/some-big-repo.git
どこからクローンを作成すればよいですか? github.com のリモート リポジトリには、大きなファイルを追加した後に行ったコミットとマージがありません。しかし、指示は、とにかくそこから取得することになっているように思わせます. (ローカルリポジトリから複製しました。)
次、
$ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
some-big-repo.git
ミラーリングされたリポジトリですか、それとも通常のローカル リポジトリですか? (これにはミラー化されたリポジトリを使用しました。)
そして、履歴が更新されていることを確認して試してみたところ、
$ cd some-big-repo.git
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive
(私はこれのためにミラー化されたクローンにいました) エラーが発生しました。
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To /home/cole/main_repo
+ 94b9a0d...c7c4317 work -> work (forced update)
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to '/home/cole/main_repo'
これは私には理にかなっています。ええ、私は現在master
チェックアウトしています。しかし、それでは、私は他に何をすべきだったのでしょうか? 別の方法で試した場合にのみ、問題が発生することがわかります。