3

20 コミット前に、大きなバイナリ ファイルが私の git リポジトリに追加されました。これを削除するには:

git filter-branch --index-filter "git rm --cached --ignore-unmatch FILE" \
    --prune-empty HEAD

プロジェクト履歴のすべてのコミット (~1100) の SHA1 を変更します。git push -fファイルは削除されますが、変更されたコミットの数が少ないことを望んでいました。私の場合は約20のコミットで、子孫のコメントをfilter-branch含むコミットのみを変更するように指示する方法はありますか?FILE

4

1 に答える 1

6

どのコミットがファイルを導入したかがわかっている場合、最も簡単な方法は指定することです$SHA^..HEAD(それを導入したコミットはどこに$SHAありますか)。これにより、古いコミットを見ることさえできなくなります。

このファイルを導入したコミットがそれを導入しただけで、それ以降に他のコミットがそれに触れていない場合は、フィルターブランチなしで、 (このファイルを導入したコミットはgit rebase --onto $SHA^ $SHAどこにありますか) を使用して、さらに簡単に取り除くことができます$SHA)。$SHAそれは単に履歴からコミットを削除します。

于 2012-05-31T19:44:50.667 に答える