問題タブ [bfg-repo-cleaner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - git履歴のファイルからテキストを置き換える方法は?
私は常にインターフェイス ベースの git クライアント (smartGit) を使用してきたため、git コンソールの経験はあまりありません。
ただし、履歴からすべての .txt ファイルの文字列を置き換える必要に直面しています (したがって、ファイル全体を消去するのではなく、文字列を置き換えるだけです)。次のコマンドを見つけました。
これを試してみたところ、残念ながら、パスワードが変更されている間に、すべてのバイナリ ファイルが破損していることに気付きました。画像などがすべて破損します。
バイナリ ファイルを破損させずにこれを行うためのより良い方法はありますか?
ありがとう。
編集:
何かと混同してしまいました。バイナリ ファイルが破損する原因となった実際のコードは次のとおりです。
上部のコードは、奇妙なことに、私のパスワードを含むすべてのファイルを実際に削除しました。
git - BFG repo-cleaner を使用した後に git repo を検査する
非常に基本的な git の質問:
危うい情報を Github にアップロードし、bfg を使用してレポをクリーンアップしています。ドキュメントに従い、次のアクションを実行しました。
次の出力を受け取りました。
個人情報がリポジトリから消去されたかどうかを確認したいのですが、ミラー化されたリポジトリ内のファイルを確認する方法がわかりません。何か案は?
git-rewrite-history - BFG は複数のフォルダーを削除します
BFG は元の git-filter-branch よりもはるかに高速であることがわかりました。
さらに多くの git リポジトリに移動する複数の svn リポジトリがあります。これは、いくつかのリポジトリ フォルダのマージと分割を意味します。プロセス中に一連のルート フォルダーを削除する必要があり、それらを履歴全体から削除したいと考えています。
BFG --delete-foldersを使用しようとしましたが、1 つのフォルダーに対しては正常に機能しますが、複数のフォルダーを削除する方法が見つかりませんでした。それは可能ですか?または、削除するフォルダーがある回数だけループして BFG を呼び出す必要がありますか?
助けてくれてありがとう。
git - BFGレポクリーナーを使用して1つのフォルダー/ディレクトリを削除するには?
BFG を使用して 1 つのディレクトリのみを削除するにはどうすればよいですか?
ヘルプには次のように書かれています。
delete folders with the specified names (eg '.svn', '*-tmp' - matches on folder name, not path within repo)
--delete-folders "config"
これは、リポジトリ内の任意の場所にある config という名前のすべてのフォルダーに一致することを意味しているようです。
git - 効果のない BFG 使用後の Git マージ複製
私はどういうわけか、リポジトリ全体(私だけが使用)に深くうんざりしており、それを整理するためにいくつかの支援を利用できます。
これが私がしたことです。コミット履歴の中に、ただ置いておきたくない資格情報を含むファイルがいくつかあることに気付きました。したがって、私は正当であり、BFG Repo-Cleaner を使用してこれらの問題を修正しようと決心しました。資格情報をすべて .gitignores に捨てて、履歴からそれらを削除しようとしました。ドキュメントの指示に従って、次のコマンドを実行しました。
この時点で、BFG から、x 個のファイルが見つかって削除されたことが通知されました。甘い。
端末ログによると、レポを更新しました。ここまでは順調ですよね?私は自分の github アカウントにアクセスし、数回クリックした後、ファイルとすべての資格情報がまだ履歴に残っていることを確認します。戻って同じコマンド セットを試しますが、ファイル リムーバーの代わりに次の行を使用します。
ここで、passwords.txt は、削除したいすべての資格情報の文字列インスタンスを含むファイルです。繰り返しになりますが、BFG ログは、修正されたインスタンスがいくつかあることを示しています。プッシュアップして確認すると、Github に座っている資格情報がまだ残っています。すべてのコミットの SHA-1 キーが変更されていることに気付いたので、おそらく BFG が何かを行ったのでしょう。
この時点で、私はあきらめて仕事に戻ろうとします。後で整理することにします。私はいくつかの作業を行い、押し上げようとすると、奇妙なマージ競合が発生します (コミットで 50 進んでいて 50 遅れています)。何?プルしてマージしようとすると、突然、git 履歴のすべてのコミットの名前が重複し、そのうちのいくつかは空白になっています。Github ネットワーク グラフを確認すると、最初のコミットから始まる 2 番目のブランチがあり、最後のコミットで圧縮されたすべてのコミットを正確に反映しているように見えます (私はブランチを作成したことがなく、直線的に作業を進めただけです)。
それらはすべて時系列で複製されているため、以前のコミットに戻すことはできません。私の資格情報はまだそこにあり、現在は 2 倍のインスタンスがあり、私の履歴は 2 倍になり、理解しようとすると非常に混乱します。BFG を最初から実行して、レポを新たに複製およびミラーリングしようとすると、Github で確認できるにもかかわらず、クレデンシャルがないと表示されます。何が起こったのか、もしあったとしてもどうすれば元の状態に戻ることができるのかを理解するのに、私は本当に助けを借りることができました.
レポ全体を削除して、新たに開始することを検討しています。私は本当にそれをしたくありません。
tldr; BFG を使用してみましたが、レポ内のすべてのコミットの中途半端なバージョンを何らかの方法で複製し、もつれを解くことができず、怪我に侮辱を加えるために、BFG は何もせず、その役割を果たしたと主張しています。
git - 未使用の大きなファイルを範囲内で Git から削除する
私のリポジトリはオープン ソース プロジェクトからフォークされているため、ForkPoint タグの前のコミットを変更したくありません。BFG Repo Cleanerを試しましたが、範囲を指定できません。
したい
- で歴史をたどる
ForkPoint..HEAD^
- コミットを書き直して、10M を超えるすべてのファイルを削除します
未使用のオブジェクトを git リポジトリから削除するには? それはこのようなものであるべきだと言います
BADFILES
しかし、に存在するファイルだけが含まれるわけではありませんHEAD
か?
たとえば、誤って をコミットしHUGE_FILE
、後でそのファイルを削除する別のコミットを行った場合、現在の作業ツリーに表示されないため、検索では が見つかりませんBADFILES
。HUGE_FILE
find
Edit1: 現在、クローンで BFG を使用してから、フォークを元の ForkPoint に移動することを検討しています。fatRepo
と与えられた場合、これは正しいコマンドslimRepo
でしょうか?
Edit2:チェリーピッキングはslimRepoでマージを処理できないため、チェリーピッキングは機能しませんでした。どうにかしてslimRepoの歴史をつぶして、単純にfatRepo/ForkPointにマージすることはできますか?
git - BFG Repo Cleaner の実行後に github リポジトリのサイズを更新/縮小する方法
次の手順を使用して、BFG Repo Cleanerでレポをクリーンアップしました。
ローカル リポジトリが 1 GB 縮小されていることがわかります。偉大な。私が今抱えていて、情報を見つけることができなかった問題は、GitHub リポジトリのサイズも縮小したいということです。これを達成する方法は?
git push
うまくいかなかったので、私も試しgit push origin --force --all
てみましたが、このエラーメッセージが表示されました:error: --all and --mirror are incompatible
git - Bitbucket は、git リポジトリが大きすぎると警告していますが、大きなファイルを確認できません
Bitbucket は、私の Git リポジトリが 1 GB を超えていることを警告しています。実際、リポジトリの詳細ページには1.7 GBと表示されています。それはクレイジーです。バージョン管理に大きなデータ ファイルを含めたに違いありません。実際、私のローカル リポジトリは10 GBです。これは、少なくとも.gitignore
、大きなファイルをバージョン管理から除外するために、ある程度は正常に使用していることを意味します。
次に、https://confluence.atlassian.com/display/BITBUCKET/Reduce+repository+sizeのチュートリアルに従い、未使用の大きなデータを削除しようとしました。files.git count-objects -v
私のレポの最上位フォルダーにあるコマンドは、次の結果を返しました。
サイズパック183607 KBは 1.7 GB よりもはるかに小さいです。少し戸惑いました。
次に、BFG Repo Cleaner https://rtyley.github.io/bfg-repo-cleanerをダウンロードし、最上位ディレクトリでコマンドjava -jar bfg-1.12.3.jar --strip-blobs-bigger-than 100M
を実行して、最新ではないすべてのコミットから 100 MB を超えるファイルを削除しました。ただし、BFG は次のメッセージを返しました。
同じことを 50M 繰り返しても同じ結果になりました。
これは、50 MB を超えるすべてのファイルが最新のコミットにあるということですか? Bitbucket のソース コード ブラウザーで、大きなデータ ファイルを含むフォルダーを確認しましたが、それらのファイルは含まれていません (正常に無視されました)。
リポジトリのサイズとリポジトリ内の大きなファイルの存在に関する混乱の原因は何かを簡単に説明できますか?