私はどういうわけか、リポジトリ全体(私だけが使用)に深くうんざりしており、それを整理するためにいくつかの支援を利用できます。
これが私がしたことです。コミット履歴の中に、ただ置いておきたくない資格情報を含むファイルがいくつかあることに気付きました。したがって、私は正当であり、BFG Repo-Cleaner を使用してこれらの問題を修正しようと決心しました。資格情報をすべて .gitignores に捨てて、履歴からそれらを削除しようとしました。ドキュメントの指示に従って、次のコマンドを実行しました。
git clone --mirror myrepo.git
java -jar bfg.jar --delete-files stuffthatshouldbedeleted.txt myrepo.git
この時点で、BFG から、x 個のファイルが見つかって削除されたことが通知されました。甘い。
cd myrepo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push
端末ログによると、レポを更新しました。ここまでは順調ですよね?私は自分の github アカウントにアクセスし、数回クリックした後、ファイルとすべての資格情報がまだ履歴に残っていることを確認します。戻って同じコマンド セットを試しますが、ファイル リムーバーの代わりに次の行を使用します。
java -jar bfg.jar --replace-text passwords.txt myrepo.git
ここで、passwords.txt は、削除したいすべての資格情報の文字列インスタンスを含むファイルです。繰り返しになりますが、BFG ログは、修正されたインスタンスがいくつかあることを示しています。プッシュアップして確認すると、Github に座っている資格情報がまだ残っています。すべてのコミットの SHA-1 キーが変更されていることに気付いたので、おそらく BFG が何かを行ったのでしょう。
この時点で、私はあきらめて仕事に戻ろうとします。後で整理することにします。私はいくつかの作業を行い、押し上げようとすると、奇妙なマージ競合が発生します (コミットで 50 進んでいて 50 遅れています)。何?プルしてマージしようとすると、突然、git 履歴のすべてのコミットの名前が重複し、そのうちのいくつかは空白になっています。Github ネットワーク グラフを確認すると、最初のコミットから始まる 2 番目のブランチがあり、最後のコミットで圧縮されたすべてのコミットを正確に反映しているように見えます (私はブランチを作成したことがなく、直線的に作業を進めただけです)。
それらはすべて時系列で複製されているため、以前のコミットに戻すことはできません。私の資格情報はまだそこにあり、現在は 2 倍のインスタンスがあり、私の履歴は 2 倍になり、理解しようとすると非常に混乱します。BFG を最初から実行して、レポを新たに複製およびミラーリングしようとすると、Github で確認できるにもかかわらず、クレデンシャルがないと表示されます。何が起こったのか、もしあったとしてもどうすれば元の状態に戻ることができるのかを理解するのに、私は本当に助けを借りることができました.
レポ全体を削除して、新たに開始することを検討しています。私は本当にそれをしたくありません。
tldr; BFG を使用してみましたが、レポ内のすべてのコミットの中途半端なバージョンを何らかの方法で複製し、もつれを解くことができず、怪我に侮辱を加えるために、BFG は何もせず、その役割を果たしたと主張しています。