5

私はフォークしたリポジトリで作業しています。このリポジトリでは、作成者がダーティパスを使用し、最初のコミットですべての依存関係をlib/ディレクトリに詰め込みました。通常、それが最初のコミットではなかった場合、私はインタラクティブなリベースを実行し、コミット全体を削除します(それが彼が行ったすべての場合)。ただし、最初のコミットをどのように編集/削除するかわかりません。最初のコミットを編集して、残りの部分に触れることなくlibディレクトリを削除する方法はありますか?

編集

ここで誤って答えに出くわしました:Gitリポジトリから最初のコミットを削除できますか?選択した回答で。それは私がもっと徹底的に検索しないことで得られるものです。

4

1 に答える 1

4
$ git filter-branch --parent-filter \
  'test $GIT_COMMIT = SECOND && echo "" || cat' \
  --tag-name-filter cat -- --all

ここで、SECONDは、新しいルートになりたいコミットのSHA-1です。

上記は、すべてのブランチが同じ1番目と2番目のコミットを使用することを前提としています。そうでない場合は、親フィルターでテストを一般化する必要があります。

これは抜本的な対策であることに注意してください。これにより、履歴全体が書き換えられ、作成者のリポジトリをたどることができなくなります。また、レポジトリをリモートにプッシュした場合は、レポジトリをで壊す必要がありますgit push -f

于 2010-01-14T17:15:40.803 に答える