1. ホーム
  2. ギット

[解決済み】プルリクエストによるマージを元に戻す?

2022-04-10 20:53:14

質問

誰かが、受け入れてはいけないプルリクエストを受け入れてしまいました。今、私たちは壊れたコードの束をマージしています。プルリクエストを取り消すにはどうすればいいのでしょうか?マージする直前のコミットに変更を戻すつもりだったのですが、たくさんのコミットがマージされていることに気づきました。そのため、マージされる数日前のこの人のコミットがすべて残っています。これを元に戻すにはどうしたらいいのでしょうか?

解決方法は?

があります。 ベターアンサー この問題に対して、段階的に分解していけばいいのですが。

このように最新の上流の変更を取得してチェックアウトする必要があります、例えば。

git fetch upstream
git checkout upstream/master -b revert/john/foo_and_bar

コミットログを見ると、以下のようなことが書かれているはずです。

commit b76a5f1f5d3b323679e466a1a1d5f93c8828b269
Merge: 9271e6e a507888
Author: Tim Tom <[email protected]>
Date:   Mon Apr 29 06:12:38 2013 -0700

    Merge pull request #123 from john/foo_and_bar

    Add foo and bar

commit a507888e9fcc9e08b658c0b25414d1aeb1eef45e
Author: John Doe <[email protected]>
Date:   Mon Apr 29 12:13:29 2013 +0000

    Add bar

commit 470ee0f407198057d5cb1d6427bb8371eab6157e
Author: John Doe <[email protected]>
Date:   Mon Apr 29 10:29:10 2013 +0000

    Add foo

ここで、後で元に戻すことができるように、プルリクエスト全体を元に戻したいと思います。 これを行うには、プルリクエストの ID を取得する必要があります。 マージコミット .

上記の例では マージコミット は、一番上にある プルリクエスト#123をマージしました..."。 .

両方の変更を元に戻すには、これを実行します ( バーを追加します。 "foo"を追加します。 ) で、結局一回のコミットでプルリクエスト全体を元に戻すことになり、後で元に戻すことができ、変更の履歴をきれいに保つことができます。

git revert -m 1 b76a5f1f5d3b323679e466a1a1d5f93c8828b269