2

私のブランチの歴史は次のとおりです。

ここに画像の説明を入力

ここで、ブランチ 558 とのマージを元に戻したいと思います。それは sha コードなので、次のようにしています。

git revert -m 1 1784adf300f43fb76391e92f80be01132eddb680

結果は次のとおりです。

[master d51e2b3] Revert "Merge branch '558'" 1 files changed, 15 insertions(+), 29 deletions(-)

この時点で元に戻そうとすると558、マージされたブランチからの最後のコミットのみが元に戻されていることがわかります (マージでは複数のファイルが影響を受けました)。マージされたブランチからすべてのコミットを元に戻すにはどうすればよいですか、それともここで何か間違ったことをしていますか?

4

1 に答える 1

2

を使用して、複数のコミット、コミット間隔を指定できますgit revert。ここでは、マスターから分岐したブランチ 558 からの最初のコミットと、2 つのブランチのマージ前のコミットを見つける必要があります。

次に、次を使用できます。

git revert -n {first_commit}..{last_commit}

ここでは、-nオプションにより、元に戻されたコミットごとにコミットを行わないようにすることができます。後で適切な説明を付けてコミットできる変更のみをステージングします。

あなたの例のように、履歴が単純であればうまくいくはずです。

修正と明確化: git は、マージ コミットまたは復帰のためのマージを含むインターバルを直接受け入れません。-m iただし、マージ コミットと、マージのどちら側を元に戻すかを i で示すオプションのみを使用して、ブランチ全体を元に戻すことができます(1 から始まるため、ここでは 2 になります)。

この問題全体は非常にデリケートであり、このドキュメントはそれについて読むのに役立ちます。

于 2013-01-15T12:05:05.390 に答える