1. ホーム
  2. git

[解決済み] gitのコミット範囲を戻す

2022-04-24 19:07:22

質問

git で、ある範囲のコミットを取り消すにはどうすればよいですか?このページでは gitrevisions のドキュメントでは、必要な範囲を指定する方法が見当たりません。例えば

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

と同等のことをしたい。

git revert B-D

という結果になるところ。

A -> B -> C -> D -> E -> F -> HEAD

ここで、FはB-Dの逆数を含む。

解き方は?

使用しているGitのバージョンは?

複数のコミットを取り消すことは、Git1.7.2+でのみサポートされています。 revert を複数回使用して古いコミットにロールバックする。 詳しくは "をご覧ください。

現在の git revert マンページ は、あくまでも 現在 Gitバージョン(1.7.4+)。


として OP アレックス・スパーリング がコメントで報告しています。

1.7.4へのアップグレードは問題なく動作します。

私自身の質問に答えると、これは私が探していた構文です。

git revert B^..D 

B^ は、B" の最初の親コミットを意味します。 B をリバートします。

"をご覧ください。 git rev-parse SPECIFYING REVISIONSセクション "を含んでいます。 <rev>^ は、例えば HEAD^ 構文:詳しくは"をご覧ください。 キャレットは何を意味するのか( ^ ) 文字の意味を教えてください。 ")

リバートされたコミットはそれぞれ別々にコミットされることに注意してください。

ヘンリック・N で明らかにしています。 コメント :

git revert OLDER_COMMIT^..NEWER_COMMIT

以下のように、すぐにコミットせずにリバートすることも可能です。

git revert -n OLDER_COMMIT^..NEWER_COMMIT
git commit -m "revert OLDER_COMMIT to NEWER_COMMIT"