git で一定範囲のコミットを元に戻すにはどうすればよいですか? gitrevisionsのドキュメントを見ると、必要な範囲を指定する方法がわかりません。例えば:
A -> B -> C -> D -> E -> HEAD
私は同等のことをしたい:
git revert B-D
結果は次のようになります。
A -> B -> C -> D -> E -> F -> HEAD
ここで、F には BD の逆が含まれます。
git で一定範囲のコミットを元に戻すにはどうすればよいですか? gitrevisionsのドキュメントを見ると、必要な範囲を指定する方法がわかりません。例えば:
A -> B -> C -> D -> E -> HEAD
私は同等のことをしたい:
git revert B-D
結果は次のようになります。
A -> B -> C -> D -> E -> F -> HEAD
ここで、F には BD の逆が含まれます。
使用している Git のバージョンは何ですか?
複数のコミットの復帰は Git1.7.2+ でのみサポートされています: 詳細については、「復帰を複数回使用して古いコミットにロールバックする」を参照してください。
現在のgit revert
マニュアル ページは、現在のGit バージョン (1.7.4+) のみを対象としています。
OP Alex Spurlingがコメントで報告しているように:
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"
やってgit revert OLDER_COMMIT^..NEWER_COMMIT
もうまくいきませんでした。
私は使用git revert -n OLDER_COMMIT^..NEWER_COMMIT
し、すべてが良いです。私は git version を使用して1.7.9.6
います。
git rebase -i
関連するコミットを1つに押しつぶすために使用します。次に、元に戻すコミットが1つだけあります。