1. ホーム
  2. ギット

[解決済み】Gitで元に戻されたマージをやり直す方法

2022-04-02 17:48:46

質問

ここでちょっと問題が発生しました。私は、問題固有のブランチ 28s にマージしたものを、Git の一般的な develop ブランチです。そのため、git-revert を使ってマージを元に戻しました。しかし、今まさに 28sdevelop しかし、git-merge コマンドは元のマージを認識し、すべてがうまくいき、ブランチはすでにマージされたと喜んでアナウンスしてくれます。どうすればいいのでしょう? Revert "Revert "28s -> develop"" ' というコミットを作成すればいいのでしょうか? 良い方法とは思えませんが、今のところ他に思いつきません。

ツリー構造はどのようなものでしょうか。

解決方法は?

元に戻すには、"revert"する必要があります。元の復帰をどのように行ったかによって、それは言うほど簡単ではないかもしれません。以下のページを見てください。 このトピックに関する公式文書 .

---o---o---o---M---x---x---W---x---Y
              /
      ---A---B-------------------C---D

を許可します。

---o---o---o---M---x---x-------x-------*
              /                       /
      ---A---B-------------------C---D

しかし、すべてうまくいくのでしょうか?もちろんです。マージを取り消すことができます。 純粋に技術的な側面から見ると、git は非常に自然にそれを行い、実際のところ何もありませんでした。 のトラブルがありました。

それは、単に "マージ前の状態" から "マージ後の状態"、それだけです。

複雑でもなければ、変でもない。 本当に危険なことは何もない。Gitは何も考えずにそれをやってくれるのです。

つまり、技術的な観点から言えば、マージの取り消しには何の問題もないのです。 しかし ワークフローの観点からは、一般に以下のようなことを避けるべきでしょう。 避ける .

可能な限り、例えば、マージされた問題を見つけた場合、その問題は をメインツリーに追加してください。 マージを元に戻すのではなく 本当に 大変 :

  • マージしたブランチまで問題を二等分し、それを修正するだけです。
  • または、その原因となった個々のコミットをリバートしてみる。

そうですね、より複雑ですし、いつもうまくいくとは限りません(時には という答えが返ってきます。 を元に戻さなければならない。 すべて のマージ")。そうすると 本当はマージを元に戻すべきなのですが、マージをやり直したいときには を元に戻す必要があります。