2011-07-20 11 views
20

は、私はこのようなマスターブランチを持っている...リバースパッチを使用せずにブランチから古いGitコミットを削除しますか?

A -- B -- C -- D -- E -- HEAD 

古いの一つがコミットなどを保持削除任意のコマンドがあり、Cをコミットすると言いますか?

最終的には私たちが逆パッチを使用してCをコミット削除するには逆パッチで新しいコミットを適用することができることを知っているが、ツリー構造は非常に明確であるとかさばる見えなくなります。この

A -- B -- D -- E -- HEAD 

ようになりすなわち、

A -- B -- C -- D -- E -- C(apply reverse patch) -- HEAD 

誰でも知っていますか?

答えて

28

インタラクティブリベースを使用します。例えば、バック5つのコミット行き:ポップアップするエディタで次に

git rebase -i HEAD~5 

を削除するコミットを含む行を削除します。

+7

慣習的な警告では、他の場所でこれをプッシュした場合は、この操作を行わないでください。 – manojlds

+5

リモコンを使用している唯一のものだと確信しているという慣習的な例外があります。 –

+4

慣習的な補遺では、他のすべての開発者に通知して、彼らが最後にそれを修正することも可能です。 –

4

インタラクティブ作品をリベースが、ちょうど1つのコマンドでそれを行うには:

git rebase --onto B C 

それでも「インタラクティブリベース」の回答にコメントを参照してください。それらもここに適用されます。

関連する問題