7

これで、git ブランチがトリッキーな状態になりました。

2 つのブランチ:

* master
* other_branch

先週、誰かが誤って other_branch を (時期尚早に) master にマージし、オリジンにプッシュしました。私たちはエラーに気づき、私は素朴にコミットしました

git revert bad_merge_commit

問題を「修正」します。すべてが順調に見えました、私たちは自分たちの生活を続けました...

今日、other_branch を master にするためのステップとして、master を other_branch にマージしようとしました。しかし、私の復帰は悪夢を引き起こしたようです. master が other_branch にマージされると、other_branch での作業のすべて (ほとんど?) が削除されます。これは、以前のコミットをすべて元に戻すように元に戻すように指示しているためだと思います。

もちろん、元に戻したことに加えて、マスターには何日分のコミットがあるので、これを解くのは難しいようです。

損傷を修復する方法はありますか?リベースの議論に手を差し伸べて、2 つの問題のあるコミットを削除することはできますか?

どうもありがとう!

[更新 - リクエストに応じて現在の状態の詳細を追加]

other_branch は、かなり前に master から分岐しました。私たちの標準的な方法は、競合の蓄積を最小限に抑えるために master を other_branch に繰り返しマージすることです (リベースすることもありますが、この場合はそうではありません)。

マスターコミット A | ビ | シー | BAD_MERGE [other_branch_@S] | REVERT_OF_BAD | D | え | F ...ヘッド

other_branch コミット P | Q | R | S [BAD_MERGE_FROM_HERE] | T | T | う | V ...ヘッド

master HEAD を other_branch HEAD にマージしようとすると、問題が発生します。

チャールズ、私は現在、あなたがここで提案した解決策を使用してマスターの複製を修正しようとしています: How to remove selected commit log entry from a Git repository while keep their changes? .

[/アップデート]

4

1 に答える 1

4

はい、問題は、元に戻すと、マージによって導入された変更が元に戻されますが、それ自体はマージされないことです。https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.htmlの補遺セクションで、考えられる解決策について説明していると思います。

このドキュメントもGitの一部であり、Debianでは次の場所にあります。/usr/share/doc/git-doc/howto/revert-a-faulty-merge.txt

于 2011-03-24T09:17:18.403 に答える