4

それで、私はこれを行う正しい方法を午前中ずっと探していましたが、それを理解するためのコマンドラインに精通していません。

大量のアセットを含む git リポジトリがあります。それは大罪のようなものです、私は知っています。

レポが大きくなりすぎました。リポジトリの履歴全体から、HEAD に存在しなくなったすべてのファイルをプログラムで削除できるように、クリーンアップしたいと思います。ファイル パスを指定してこれを行う方法を見てきましたが、実際には、最終製品から削除された 1000 以上のファイルのように話しています。

更新: そもそもそこにあるはずのないすべてのアセットのレポをクリーンアップしました。私は実際にそこにソースコードとそこにあるべきいくつかの資産を持っているだけです. すべてのソースコードのすべての履歴を保持したいので、現在存在する履歴を保持しながら、削除されたファイルを履歴から破棄したいと考えています。それが目標です。を使用して実行できると確信していますがgit filter-branch、十分に理解していません。

4

3 に答える 3

0

最初にデータをバックアップします。これはほとんどテストされていません!

git filter-branch --tree-filter 'for i in $(git diff master --summary --diff-filter=A | grep "create mode" | cut -d " " -f 5-); do 
    rm "$i"
done' --prune-empty HEAD
于 2014-12-01T17:39:10.077 に答える