165

git で一定範囲のコミットを元に戻すにはどうすればよいですか? gitrevisionsのドキュメントを見ると、必要な範囲を指定する方法がわかりません。例えば:

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

私は同等のことをしたい:

git revert B-D

結果は次のようになります。

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

ここで、F には BD の逆が含まれます。

4

4 に答える 4

215

使用している 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^を参照し^ください

元に戻された各コミットは個別にコミットされることに注意してください。

Henrik Nはコメントで次のように説明しています。

git revert OLDER_COMMIT^..NEWER_COMMIT

以下に示すように、すぐにコミットせずに元に戻すことができます。

git revert -n OLDER_COMMIT^..NEWER_COMMIT
git commit -m "revert OLDER_COMMIT to NEWER_COMMIT"
于 2011-02-14T13:31:09.110 に答える
10

やってgit revert OLDER_COMMIT^..NEWER_COMMITもうまくいきませんでした。

私は使用git revert -n OLDER_COMMIT^..NEWER_COMMITし、すべてが良いです。私は git version を使用して1.7.9.6います。

于 2012-10-25T18:15:58.303 に答える
-1

git rebase -i関連するコミットを1つに押しつぶすために使用します。次に、元に戻すコミットが1つだけあります。

于 2011-02-14T13:48:59.917 に答える