14

表面的には、これは git リポジトリの履歴の変更に関する 100 万件の同様の質問と同じように見えるかもしれませんが、私の場合は少し異なり、自分に合った解決策を見つけられなかったと思います。

私は git リポジトリを持っていますが、ある時点で、プログラマーの 1 人が誤って別のリポジトリからコードを持ち込んでしまい、その (以前は無関係だった) リポジトリの全履歴が、現在、私のリポジトリのコミット ログの一部になっています。

コミットを見ると、以前は関係のなかったリポジトリからこの履歴を「持ち込んだ」正確なコミットが非常に明確です。

上記のコミットの後、これらのファイルには触れませんでした。

これらの無関係なコミットをすべて自分のリポジトリから完全に破棄したいと考えています。コミットごとにコミットする必要があるかどうかは気にしませんが、リポジトリに自分のコードのみを真に反映させたいと思っています。

それが役立つ場合、構造は次のようになります。

  • 1234 以降 (より最近) のコミットでは、 1234 で導入された間違ったファイルには触れないでください。

  • コミット 1234 - コード ベースに関連するいくつかのファイルがあり、無関係なリポジトリの全履歴にもマージされます

  • 1234 より前(より早い時期)のコミットは、現在、私たち自身のコミットと無関係なリポジトリのコミットが混在しています。

4

1 に答える 1

4

インタラクティブなリベースを行う必要があります:

git rebase -i <hash-of-the-commit-1034>~

リストからコミット 1034 を削除します。git ガベージ コレクターを実行します。

git gc

アップストリームにプッシュします。

git push -f

これにより、リポジトリからコミット 1034 が消去されます。

于 2012-07-19T07:52:57.597 に答える