3

そのようなコミット履歴を持つgitリポジトリがあるとします:ABCDE

今、突然、コミット B と C は完全に欠陥があり、不要であることに気付きました。また、私はプロジェクトの履歴を完全に自由に書き換えることができるとします (おそらく私は一人でプロジェクトに取り組んでいます)。

コミット B と C を指す別のブランチがあるので、それらを失っても問題ありません。これらの変更が実際に必要になった場合は、そのブランチをチェックアウトして確認できます。

しかし、マスター ブランチの場合、履歴を強制的に AD'-E' にしたいと考えています。ここで、D と E には変更された親リストがあるだけでなく、コミット B と C によって導入された変更も含まれていません。

これは可能ですか?もしそうなら、どのように?

4

3 に答える 3

5

git rebase -i HEAD~5

次に、コミットのリストから不要なコミットを削除します

于 2010-12-06T11:38:15.417 に答える
2

5 つのコミットがあると仮定します。

その場合、次のことを行います。

git rebase -i HEAD~5

次に、コミット B と C に関連する 2 行を削除します。

最後に、次のことを行います。

git rebase --continue
于 2010-12-06T11:37:14.787 に答える
1
git rebase --onto $commit_A $commit_C $commit_E

これは、「C から E までのすべてのコミットを取得し、A の上でそれらを再生する」ことを意味します。

もちろん、参照しているコミットには任意の表記を使用できます。例えば。がmasterE にあり、C を指す分岐がある場合、たとえば 、次のように言うbackupこともできます。

git rebase --onto $commit_A backup master

これはさらに便利ですHEAD.mastermaster

于 2010-12-06T11:50:19.240 に答える