Gitでコミットの範囲を元に戻すにはどうすればいいでしょうか?gitリビジョンドキュメントでは、必要な範囲を指定する方法がわかりません。例:
A -> B -> C -> D -> E -> HEAD
私は以下と同等のことをしたいです:
git revert B-D
結果は次のようになります:
A -> B -> C -> D -> E -> F -> HEAD
ここで、F には BD の逆が含まれます。
ベストアンサー1
どのバージョンの 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
改訂の指定セクション「これには、<rev>^
例えばHEAD^
構文: 詳細は「キャレット(^
)文字は何を意味しますか?)
元に戻されたコミットはそれぞれ個別にコミットされることに注意してください。
git revert OLDER_COMMIT^..NEWER_COMMIT
以下に示すように、すぐにコミットせずに元に戻すことができます。
git revert -n OLDER_COMMIT^..NEWER_COMMIT
git commit -m "revert OLDER_COMMIT to NEWER_COMMIT"